Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Framework e struttura delle applicazioni MVC

In un sito Web ASP.NET gli URL vengono in genere mappati a file archiviati su disco (di norma file con estensione aspx). In questi file con estensione aspx sono inclusi il markup e il codice che viene elaborato per rispondere alla richiesta.

Il framework di MVC ASP.NET esegue il mapping degli URL al codice server in modo diverso rispetto a una pagina Web Form ASP.NET. Anziché eseguire il mapping degli URL a pagine o gestori ASP.NET, il framework esegue il mapping degli URL alle classi controller. Le classi controller gestiscono le richieste in arrivo, ad esempio l'input e le interazioni dell'utente, ed eseguono l'applicazione e la logica dei dati appropriate in base all'input dell'utente. Una classe controller chiama in genere un componente di visualizzazione separato che genera output HTML come risposta.

Il framework di MVC ASP.NET separa i componenti del modello, della visualizzazione e del controller. Il modello rappresenta la logica di business/di dominio dell'applicazione, in genere con dati supportati da un database. La visualizzazione viene selezionata dal controller ed esegue il rendering dell'interfaccia utente appropriata. Per impostazione predefinita, il framework di MVC ASP.NET utilizza la pagina ASP.NET esistente (con estensione aspx), la pagina master (con estensione master) e i tipi di controllo utente (con estensione ascx) per l'esecuzione del rendering nel browser. Il controller individua il metodo di azione appropriato nel controller, ottiene i valori da utilizzare come argomenti del metodo di azione, gestisce gli errori che potrebbero verificarsi durante l'esecuzione del metodo di azione ed esegue quindi il rendering della visualizzazione richiesta. Per impostazione predefinita, ogni set di componenti si trova in una cartella distinta di un progetto di applicazione Web MVC.

Il framework di MVC ASP.NET utilizza il motore di routing di ASP.NET, il quale offre la flessibilità necessaria per il mapping degli URL alle classi controller. È possibile definire regole di routing che il framework di MVC ASP.NET utilizza per valutare gli URL in ingresso e selezionare il controller appropriato. È inoltre possibile fare in modo che il motore di routing analizzi automaticamente le variabili definite negli URL e che il framework di MVC ASP.NET passi i valori al controller come argomenti di parametro. Per ulteriori informazioni, vedere ASP.NET Routing.

Il framework di MVC ASP.NET non utilizza il modello di postback di Web Form ASP.NET per le interazioni con il server. Al contrario, tutte le interazioni dell'utente finale vengono indirizzate a una classe controller. In questo modo la logica dell'interfaccia utente e quella di business vengono mantenute separate, consentendone una facile testabilità. Di conseguenza, lo stato di visualizzazione ASP.NET e gli eventi del ciclo di vita della pagina Web Form ASP.NET non risultano integrati con le visualizzazioni basate su MVC.

Il framework di MVC ASP.NET include un modello di progetto di Visual Studio che consente di creare applicazioni Web strutturate per il supporto del modello MVC. Questo modello consente di creare una nuova applicazione Web MVC configurata in modo tale da disporre delle cartelle, dei modelli di elementi e delle voci del file di configurazione necessari.

NotaNota:

I modelli di progetto Applicazione Web MVC ASP.NET si basano sul modello di progetto Applicazione Web ASP.NET. È possibile selezionare un nuovo progetto MVC ASP.NET scegliendo Nuovo progetto dal menu File anziché Nuovo sito Web.

Quando si crea una nuova applicazione Web MVC, Visual Studio offre la possibilità di creare due progetti contemporaneamente. Il primo è un progetto Web in cui viene implementata l'applicazione, mentre il secondo è un progetto di unit test in cui è possibile scrivere unit test per i componenti MVC inclusi nel primo progetto.

NotaNota:

Microsoft Visual Studio Standard Edition e Microsoft Visual Web Developer Express Edition non supportano la creazione di progetti di unit test e non consentono pertanto di creare un progetto di test durante la creazione di un'applicazione MVC.

Per eseguire il test di applicazioni MVC ASP.NET, è possibile utilizzare qualsiasi framework per unit test compatibile con .NET Framework. Visual Studio Professional Edition offre il supporto per progetti di test per MSTest. Per ulteriori informazioni su MSTest, vedere Opzioni della riga di comando di MSTest.exe.

Quando si crea un progetto di applicazione Web ASP.NET, i componenti MVC vengono separati in base alle cartelle di progetto illustrate nella figura seguente:

mvc_FolderStructure

Per impostazione predefinita, i progetti MVC includono le cartelle seguenti:

  • App_Data, che rappresenta l'archivio fisico per i dati. Il ruolo di questa cartella è identico a quello svolto nei siti Web ASP.NET che utilizzano pagine Web Form.

  • Content, che rappresenta la posizione consigliata per l'aggiunta di file di dati, ad esempio fogli di stile CSS, immagini e così via. La cartella Content è in genere destinata ai file statici.

  • Controllers, che rappresenta la posizione consigliata per i controller. Per il framework di MVC, è necessario che i nomi di tutti i controller terminino con "Controller", ad esempio HomeController, LoginController o ProductController.

  • Models, destinata alle classi che rappresentano il modello di applicazione per l'applicazione Web MVC. Questa cartella contiene in genere il codice che definisce gli oggetti e la logica per l'interazione con l'archivio dati. Gli oggetti dei modelli effettivi si troveranno in genere in librerie di classi separate. Quando si crea una nuova applicazione è tuttavia possibile inserire le classi in questa posizione e spostarle in librerie di classi separate in un momento successivo durante il ciclo di sviluppo.

  • Scripts, che rappresenta la posizione consigliata per i file di script che supportano l'applicazione. Per impostazione predefinita, questa cartella contiene i file di ASP.NET AJAX Foundation e la libreria jQuery.

  • Views, che rappresenta la posizione consigliata per le visualizzazioni. Le visualizzazioni utilizzano i file ViewPage (con estensione aspx), ViewUserControl (con estensione ascx) e ViewMasterPage (con estensione master), oltre a qualsiasi altro file correlato al rendering delle visualizzazioni. La cartella Views contiene una cartella per ogni controller, il cui nome corrisponde al prefisso del nome del controller. Se ad esempio si dispone di un controller denominato HomeController, la cartella Views conterrà una cartella Home. Per impostazione predefinita, quando il framework di MVC ASP.NET carica una visualizzazione, nella cartella Views\Nomecontroller viene eseguita la ricerca di un file ViewPage (con estensione aspx) che presenta il nome della visualizzazione richiesta. Per impostazione predefinita, nella cartella Views è inoltre inclusa una cartella denominata Shared, che non corrisponde ad alcun controller. La cartella Shared viene utilizzata per le visualizzazioni condivise da più controller. Nella cartella Shared è ad esempio possibile inserire la pagina master dell'applicazione Web.

Oltre alle cartelle elencate in precedenza, un'applicazione Web MVC utilizza il codice incluso nel file Global.asax per impostare i valori predefiniti globali per il routing degli URL e il file Web.config per configurare l'applicazione.

Le route vengono inizializzate nel metodo Application_Start del file Global.asax. Nell'esempio seguente viene illustrato un file Global.asax tipico che include la logica per il routing predefinito.


public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}


Aggiunte alla community

AGGIUNGI
Mostra: