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

Cenni preliminari su 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 di MVC ASP.NET offre un'alternativa al modello di Web Form ASP.NET per la creazione di applicazioni Web. Quello di MVC ASP.NET è un framework di presentazione leggero e facile da testare che, come con le applicazioni basate su Web Form, è integrato con le funzionalità ASP.NET esistenti, quali pagine master e autenticazione basata sull'appartenenza. Il framework di MVC è definito nell'assembly System.Web.Mvc.

Modelli di progettazione MVC

mvc_DesignPattern

MVC è un modello di progettazione standard con cui molti sviluppatori hanno familiarità. Mentre l'utilizzo del framework di MVC porterà vantaggi ad alcuni tipi di applicazioni Web, il modello di applicazione ASP.NET tradizionale basato su Web Form e postback continuerà a essere utilizzato da altri tipi di applicazioni Web e per altri ancora verrà adottata una combinazione di entrambi gli approcci, poiché un approccio non esclude l'altro.

Il framework di MVC include i componenti seguenti:

  • 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 in un database SQL Server.

    Nelle applicazioni di dimensioni ridotte il modello costituisce spesso una separazione concettuale anziché fisica. Ad esempio, se l'applicazione legge esclusivamente un dataset e lo invia alla visualizzazione, l'applicazione non dispone di un livello di modello fisico e di classi associate. In tal caso, il dataset 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 potrebbe 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 infine selezionano una visualizzazione per il rendering dell'interfaccia utente. In un'applicazione MVC la visualizzazione consente solo di visualizzare le informazioni. Il controller gestisce e risponde all'input dell'utente e all'interazione. Ad esempio, il controller gestisce i valori della stringa di query e passa questi valori al modello, che a sua volta potrebbe 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 al contempo un accoppiamento debole 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 debole tra i tre componenti principali di un'applicazione MVC favorisce inoltre lo sviluppo parallelo. Uno sviluppatore può ad esempio lavorare sulla visualizzazione, un secondo 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 sia per visualizzare l'output che per rispondere all'input dell'utente. La scrittura di test automatizzati per applicazioni Web basate su Web Form ASP.NET 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 basate su Web Form ASP.NET possono essere pertanto più difficili da implementare rispetto ai test di un'applicazione MVC. Per i test in un'applicazione basata su Web Form ASP.NET è inoltre necessario un server Web. Il framework di 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 di MVC ASP.NET o il modello di Web Form ASP.NET. Il framework di MVC non sostituisce il modello di Web Form ASP.NET. Per le applicazioni Web è infatti possibile utilizzare uno dei due framework. Se si dispone di applicazioni basate su Web Form esistenti, queste continueranno a funzionare normalmente.

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

Vantaggi di un'applicazione Web basata su MVC

Il framework di MVC ASP.NET offre i vantaggi seguenti:

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

  • Non utilizza lo stato di visualizzazione o form basati su server. Il framework di 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 sui 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 vantaggi seguenti:

  • Supporta un modello 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 dozzine 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 controlli e così via) sono strettamente integrati e necessitano in genere di una minore quantità di codice rispetto al modello MVC.

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

  • Separazione delle attività dell'applicazione (logica di input, logica di business e logica dell'interfaccia utente), testabilità e sviluppo basato sui test (TDD). Tutti i contratti principali nel framework di 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 estensibile e di collegamento. I componenti del framework di MVC ASP.NET sono progettati in modo tale da poter 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 di MVC ASP.NET supporta inoltre l'utilizzo dei modelli di 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 oggetto deve ottenere il secondo oggetto da un'origine esterna, ad esempio un file di configurazione. Il test viene in questo modo reso più facile.

  • Supporto completo per il routing di ASP.NET, un componente avanzato per il mapping degli URL che consente di compilare le applicazioni che dispongono di URL comprensibili di cui è possibile eseguire 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 e l'indirizzamento REST (Representational State Transfer).

  • Supporto per l'utilizzo del markup in file di pagine ASP.NET (con estensione aspx), file di controlli utente (con estensione ascx) e file di markup di pagine master (con estensione master) come modelli di visualizzazione. Con il framework di MVC ASP.NET è 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. MVC ASP.NET consente di utilizzare funzionalità quali autenticazione basata su form e autenticazione di Windows, autorizzazione di URL, appartenenza e ruoli, memorizzazione nella cache di output e dati, gestione dello stato di sessione e profilo, monitoraggio dell'integrità, sistema di configurazione e architettura del provider.

Titolo

Descrizione

Framework e struttura delle applicazioni MVC

Vengono illustrati il framework e l'organizzazione di un'applicazione MVC.

Informazioni sull'esecuzione di un'applicazione MVC

Viene illustrato il funzionamento di un'applicazione MVC.

Walkthrough: Creating a Basic MVC Project with Unit Tests in Visual Studio

Viene spiegato come creare un'applicazione MVC di base, nonché come aggiungere controller, visualizzazioni e unit test.

Compatibilità di Web Form ASP.NET e MVC

Vengono illustrate le differenze tra MVC ASP.NET e Web Form ASP.NET.

Aggiunte alla community

AGGIUNGI
Mostra: