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

Panoramica di ASP.NET MVC

Il modello architetturale MVC (Model-View-Controller) suddivide un'applicazione in tre componenti principali: il modello, la visualizzazione e il controller. Il framework ASP.NET MVC offre un'alternativa al modello Web Form ASP.NET per la creazione di applicazioni Web. ASP.NET MVC è un framework di presentazione leggero e facile da testare che, come le applicazioni basate su Web Form, è integrato con funzionalità ASP.NET esistenti, quali le pagine master e l'autenticazione basata sull'appartenenza. Il framework MVC è definito nell'assembly System.Web.Mvc.

Modello di progettazione MVC

Modello di progettazione MVC (Model View Controller)

MVC è un modello di progettazione standard con cui molti sviluppatori hanno familiarità. Alcuni tipi di applicazioni Web trarranno il massimo vantaggio dal framework MVC, mentre altri continueranno a utilizzare il modello ASP.NET tradizionale basato su Web Form e postback e altri ancora adotteranno una combinazione di entrambi gli approcci, dato che nessuno dei due esclude l'altro.

Il framework MVC include i seguenti componenti:

  • Modelli. Gli oggetti modello rappresentano le parti dell'applicazione che implementano la logica per il dominio dei dati dell'applicazione. Spesso gli oggetti modello recuperano e archiviano lo stato del modello in un database. Un oggetto Product potrebbe ad esempio recuperare informazioni da un database, utilizzarle, quindi scrivere informazioni aggiornate in una tabella Products di un database SQL Server.

    Nelle applicazioni di dimensioni ridotte il modello costituisce spesso una separazione concettuale anziché fisica. Se ad esempio l'applicazione esegue solo la lettura di un set di dati e invia tale set alla visualizzazione, non disporrà di un livello di modello fisico e di classi associate. In tal caso, il set di dati assume il ruolo di oggetto modello.

  • Visualizzazioni. Le visualizzazioni sono i componenti che consentono di visualizzare l'interfaccia utente dell'applicazione. Questa interfaccia utente viene in genere creata in base ai dati del modello. Un esempio può essere costituito da una visualizzazione di modifica di una tabella Products in cui vengono visualizzati caselle di testo, elenchi a discesa e caselle di controllo in base allo stato corrente di un oggetto Product.

  • Controller. I controller sono i componenti che gestiscono l'interazione dell'utente, utilizzano il modello e selezionano infine una visualizzazione per il rendering dell'interfaccia utente. In un'applicazione MVC la visualizzazione consente solo di visualizzare le informazioni. Il controller svolge il ruolo di gestore e risponde all'input e all'interazione dell'utente. Il controller gestisce, ad esempio, i valori della stringa di query e passa questi valori al modello, che a sua volta può utilizzarli per eseguire una query sul database.

Il modello MVC consente di creare applicazioni che separano i diversi aspetti dell'applicazione (logica di input, logica di business e logica dell'interfaccia utente), fornendo nel contempo un accoppiamento di tipo loose tra questi elementi. Il modello specifica la posizione in cui ogni tipo di logica deve trovarsi nell'applicazione. La logica dell'interfaccia risiede nella visualizzazione, la logica di input risiede nel controller e la logica di business risiede nel modello. Questa separazione consente di gestire la complessità al momento della compilazione di un'applicazione, in quanto permette di concentrarsi su un aspetto dell'implementazione alla volta. È ad esempio possibile concentrarsi sulla visualizzazione senza dipendere dalla logica di business.

L'accoppiamento di tipo loose tra i tre componenti principali di un'applicazione MVC favorisce inoltre lo sviluppo parallelo. Uno sviluppatore può ad esempio lavorare sulla visualizzazione, un altro sulla logica del controller e un terzo può concentrarsi sulla logica di business nel modello.

Oltre a semplificare la gestione della complessità, il modello MVC rende più facile eseguire il test di applicazioni rispetto a un'applicazione Web ASP.NET basata su Web Form. Ad esempio, in un'applicazione Web ASP.NET basata su Web Form viene utilizzata un'unica classe per visualizzare l'output e per rispondere all'input dell'utente. La scrittura di test automatizzati per applicazioni ASP.NET basate su Web Form può risultare complessa in quanto per eseguire il test di una singola pagina è necessario creare istanze della classe di pagina, di tutti i relativi controlli figlio e delle classi dipendenti aggiuntive nell'applicazione. Poiché per eseguire la pagina vengono create istanze per un numero elevato di classi, può essere difficile scrivere test indirizzati esclusivamente su singole parti dell'applicazione. I test per le applicazioni ASP.NET basate su Web Form possono essere pertanto più difficili da implementare rispetto ai test in un'applicazione MVC. Per i test in un'applicazione ASP.NET basata su Web Form è inoltre necessario disporre di un server Web. Il framework MVC disaccoppia i componenti e utilizza in modo massiccio le interfacce, rendendo pertanto possibile il test di singoli componenti in maniera isolata dal resto del framework.

È necessario valutare con attenzione se implementare un'applicazione Web tramite il framework ASP.NET MVC o il modello Web Form ASP.NET. Il framework MVC non sostituisce il modello Web Form. Per le applicazioni Web è infatti possibile utilizzare uno dei due. Se si dispone di applicazioni basate su Web Form esistenti, queste continueranno a funzionare normalmente.

Prima di decidere di utilizzare il framework MVC o il modello Web Form per un sito Web specifico, considerare i vantaggi offerti da ciascun approccio.

Vantaggi di un'applicazione Web basata su MVC

Il framework ASP.NET MVC offre i seguenti vantaggi:

  • Rende più facile gestire la complessità mediante la suddivisione di un'applicazione in un modello, una visualizzazione e un controller.

  • Non utilizza lo stato di visualizzazione o form basati su server. Il framework MVC risulta in tal modo lo strumento ideale per gli sviluppatori che desiderano disporre del controllo completo sul comportamento di un'applicazione.

  • Utilizza un modello Front Controller che elabora le richieste dell'applicazione Web attraverso un singolo controller, consentendo in tal modo di progettare un'applicazione dotata del supporto per un'infrastruttura di routing avanzata. Per ulteriori informazioni, vedere Front Controller.

  • Offre un supporto più idoneo per lo sviluppo basato su test (TDD, Test-Driven Development).

  • È appropriato per le applicazioni Web supportate da team di sviluppatori di grandi dimensioni e per i designer Web che necessitano di un grado di controllo elevato sul comportamento dell'applicazione.

Vantaggi di un'applicazione Web basata su Web Form

Il framework basato su Web Form offre i seguenti vantaggi:

  • Supporta un modello di eventi che mantiene lo stato su HTTP, con conseguenti vantaggi per lo sviluppo di applicazioni Web line-of-business. L'applicazione basata su Web Form fornisce decine di eventi supportati in centinaia di controlli server.

  • Utilizza un modello Page Controller che aggiunge funzionalità a singole pagine. Per ulteriori informazioni, vedere Page Controller.

  • Utilizza lo stato di visualizzazione in form basati su server, contribuendo a semplificare la gestione delle informazioni sullo stato.

  • È appropriato per i team di sviluppatori e designer Web di piccole dimensioni che desiderano usufruire della disponibilità di numerosi componenti per lo sviluppo rapido delle applicazioni.

  • È in generale meno complesso per quanto riguarda lo sviluppo di applicazioni, poiché i componenti (la classe Page, i relativi controlli e così via) sono strettamente integrati e necessitano in genere di una minore quantità di codice rispetto al modello MVC.

Il framework ASP.NET MVC offre le seguenti funzionalità:

  • Separazione delle attività dell'applicazione (logica di input, logica di business e logica dell'interfaccia utente), testabilità e sviluppo basato su test (TDD). Tutti i contratti principali nel framework MVC sono basati sull'interfaccia e possono essere sottoposti a test tramite oggetti fittizi, ovvero oggetti simulati che imitano il comportamento degli oggetti effettivi nell'applicazione. È possibile eseguire uno unit test dell'applicazione senza dovere eseguire i controller in un processo ASP.NET. Le attività di unit test risultano in tal modo veloci e flessibili. È possibile utilizzare qualsiasi framework per unit test compatibile con .NET Framework.

  • Framework estendibile e collegabile. I componenti del framework ASP.NET MVC sono progettati per essere sostituiti o personalizzati con facilità. È possibile collegare il motore di visualizzazione, i criteri di routing degli URL e la serializzazione dei parametri dei metodi di azione personalizzati, nonché altri componenti. Il framework ASP.NET MVC supporta inoltre l'utilizzo dei modelli contenitore Dependency Injection (DI) e Inversion of Control (IOC). Il modello DI consente di inserire oggetti in una classe, anziché utilizzare la classe per creare l'oggetto stesso. Il modello IOC specifica che, se un oggetto richiede un altro oggetto, il primo deve ottenere il secondo da un'origine esterna, ad esempio un file di configurazione. In questo modo, l'esecuzione di test risulta semplificata.

  • Supporto completo per il routing di ASP.NET, un componente avanzato per il mapping degli URL che consente di compilare le applicazioni con URL comprensibili e disponibili per la ricerca. Gli URL non devono includere le estensioni di file e sono progettati per supportare i modelli di denominazione degli URL che risultano appropriati per l'ottimizzazione del motore di ricerca (SEO) e l'indirizzamento REST (Representational State Transfer).

  • Supporto per l'utilizzo del markup in file di pagine ASP.NET (aspx), file di controlli utente (ascx) e file di markup di pagine master (master) come modelli di visualizzazione. Con il framework ASP.NET MVC è possibile utilizzare le funzionalità ASP.NET esistenti, ad esempio pagine master annidate, espressioni inline (<%= %>), controlli server dichiarativi, modelli, associazione dati, localizzazione e così via.

  • Supporto per le funzionalità ASP.NET esistenti. ASP.NET MVC consente di utilizzare numerose funzionalità, tra cui l'autenticazione basata su form e l'autenticazione di Windows, l'autorizzazione di URL, l'appartenenza e i ruoli, la memorizzazione nella cache di output e dati, la gestione dello stato di sessione e profilo, il monitoraggio dell'integrità, il sistema di configurazione e l'architettura del provider.

Mostra: