1. Introduzione
Il codice PDF di questo documento è disponibile |QUI|.
Gli esempi di questo documento sono disponibili |QUI|.
In questa sede ci proponiamo di introdurre, con l’ausilio di esempi, i concetti fondamentali di ASP.NET MVC, un framework web.NET, che fornisce un contesto per lo sviluppo di applicazioni web secondo il modello MVC (Modello – Vista – Controllore).
La comprensione degli esempi contenuti in questo documento richiede pochi prerequisiti. Sono necessarie solo conoscenze di base del linguaggio C#, che si possono trovare nel documento «Introduzione al linguaggio C#» all'indirizzo URL [Imparare C# versione 3.0 con .NET Framework 3.5 (2008)]. Viene proposto un caso di studio per mettere in pratica le conoscenze acquisite su ASP.NET MVC. Esso utilizza l’ORM (Object Relational Mapper) Entity Framework. Questo ORM è presentato nel documento "Introduzione a Entity Framework 5 Code First" disponibile all'indirizzo URL [Introduzione a Entity Framework 5 Code First attraverso esempi (2012)].
Questo documento è incompleto sotto molti aspetti. Per approfondire ASP.NET MVC, è possibile consultare i seguenti riferimenti:
- [ref1]: il libro «Pro ASP.NET MVC 4» scritto da Adam Freeman e pubblicato da Apress. Si tratta di un ottimo libro. Se fosse disponibile online gratuitamente e in francese, il presente documento non avrebbe ragione di esistere. Consiglio a tutti coloro che ne hanno la possibilità di avvicinarsi a ASP.NET MVC con l’aiuto di questo libro. I codici sorgente degli esempi contenuti nel libro sono disponibili gratuitamente su URL [http://www.apress.com/9781430242369];
- [ref2]: il sito del framework [http://www.asp.net/mvc]. Qui troverete tutto il materiale necessario per l’autoapprendimento. Una versione in francese è disponibile su URL [http://dotnet.developpez.com/mvc/ ];
- il sito di [developpez.com] dedicato a ASP.NET [http://dotnet.developpez.com/aspnet/ ].
Il documento è stato redatto in modo tale da poter essere letto anche senza un computer a portata di mano. Per questo motivo sono state inserite numerose schermate.
1.1. Il ruolo di ASP.NET e MVC in un'applicazione web
Innanzitutto, collochiamo ASP.NET MVC nel contesto dello sviluppo di un’applicazione web. Nella maggior parte dei casi, questa sarà costruita su un’architettura a più livelli come la seguente:
![]() |
- il livello [Web] è quello a contatto con l’utente dell’applicazione web. L’utente interagisce con l’applicazione web tramite pagine web visualizzate da un browser. È in questo livello che si trovano ASP.NET e MVC, ed esclusivamente in questo livello;
- il livello [métier] implementa le regole di gestione dell’applicazione, come il calcolo di uno stipendio o di una fattura. Questo livello utilizza i dati provenienti dall’utente tramite il livello [Web] e quelli provenienti da SGBD tramite il livello [DAO];
- Il livello [DAO] (Data Access Objects), il livello [ORM] (Object Relational Mapper) e il connettore ADO.NET gestiscono l'accesso ai dati del SGBD. Il livello [ORM] funge da ponte tra gli oggetti gestiti dal livello [DAO] e le righe e le colonne delle tabelle di un database relazionale. Due ORM sono comunemente utilizzati nel mondo: NET, NHibernate (http://sourceforge.net/projects/nhibernate/) ed Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx);
- l'integrazione dei livelli può essere effettuata tramite un contenitore di iniezione delle dipendenze (Dependency Injection Container) come Spring (http://www.springframework.net/ );
La maggior parte degli esempi riportati di seguito utilizzerà un solo livello, il livello [Web]:
![]() |
Questo documento si concluderà tuttavia con la realizzazione di un’applicazione web multistrato:
![]() |
1.2. Il modello di sviluppo di ASP.NET MVC
ASP.NET MVC implementa il modello di architettura denominato MVC (Modello – Vista – Controller) nel modo seguente:
![]() |
L’elaborazione di una richiesta da parte di un cliente avviene nel modo seguente:
- richiesta – le URL richieste hanno la forma http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&... Il [Front Controller] utilizza un file di configurazione per «instradare» la richiesta verso il controller corretto e l’azione corretta all’interno di tale controller. A tal fine, utilizza il percorso [Controlleur/Action] dell’URL. Il resto dell’URL e dell’[/param1/param2/...] sono parametri facoltativi che verranno trasmessi all’azione. La C di MVC è in questo caso la stringa [Front Controller, Contrôleur, Action]. Se il percorso [Controlleur/Action] non porta a un controller o a un'azione esistente, il server Web risponderà che l'URL richiesta non è stata trovata.
- Elaborazione
- l’azione selezionata può utilizzare i parametri parami che le sono stati trasmessi da [Front Controller]. Questi possono provenire da diverse fonti:
- dal percorso [/param1/param2/...] dell’URL,
- dai parametri [p1=v1&p2=v2] dell'URL,
- dai parametri inviati dal browser insieme alla sua richiesta;
- nell'elaborazione della richiesta dell'utente, l'azione potrebbe richiedere il livello [métier] [2b]. Una volta elaborata la richiesta del cliente, questa può generare diverse risposte. Un esempio classico è:
- una pagina di errore se la richiesta non è stata elaborata correttamente
- una pagina di conferma in caso contrario
- l’azione richiede che venga visualizzata una determinata vista [3]. Questa vista mostrerà i dati che chiamiamo modello della vista. È la M di MVC. L’azione creerà questo modello M [2c] e richiederà la visualizzazione di una vista V [3];
- risposta: la vista V selezionata utilizza il modello M creato dall’azione per inizializzare le parti dinamiche della risposta HTML che deve inviare al client, quindi invia tale risposta.
Ora precisiamo il legame tra l’architettura Web MVC e l’architettura a livelli. A seconda della definizione che si dà al modello, questi due concetti sono collegati oppure no. Prendiamo un’applicazione Web ASP.NET MVC a un livello:
![]() |
Se implementiamo il livello [Web] con ASP.NET e MVC, avremo sì un’architettura Web MVC, ma non un’architettura multistrato. In questo caso, il livello [Web] si occuperà di tutto: presentazione, logica di business, accesso ai dati. Saranno le azioni a svolgere questo lavoro.
Consideriamo ora un’architettura web multistrato:
![]() |
Il livello [Web] può essere implementato senza framework e senza seguire il modello MVC. Si ha quindi effettivamente un’architettura multistrato, ma il livello Web non implementa il modello MVC.
Pertanto, il livello [Web] quisopra può essere implementato con ASP.NET e MVC, ottenendo così un’architettura a livelli con un livello [Web] di tipo MVC. Fatto ciò, è possibile sostituire questo livello ASP.NET MVC con un livello ASP.NET classico (WebForms), mantenendo il resto (di business, DAO, ORM) invariato. Si ottiene così un’architettura a livelli con un livello [Web] che non è più di tipo MVC.
In MVC, abbiamo affermato che il modello M era quello della vista V, c.a.d, ovvero l’insieme dei dati visualizzati dalla vista V. Viene fornita un’altra definizione del modello M di MVC:
![]() |
Molti autori ritengono che ciò che si trova a destra del livello [Web] costituisca il modello M del MVC. Per evitare ambiguità, si può parlare:
- del modello di dominio quando si indica tutto ciò che si trova a destra del livello [Web]
- del modello della vista quando si indicano i dati visualizzati da una vista V
Di seguito, il termine «modello M» indicherà esclusivamente il modello di una vista V.
1.3. Gli strumenti utilizzati
Di seguito utilizziamo (settembre 2013) le versioni Express di Visual Studio 2012:
- [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-windows-desktop ] per le applicazioni desktop;
- [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-Web ] per le applicazioni Web.
Per installare le ultime versioni di questi prodotti, è possibile utilizzare il prodotto [Web Platform Installer] di Microsoft (http://www.microsoft.com/Web/downloads/platform.aspx).
Inoltre, si utilizzerà il browser Chrome di Google (http://www.google.fr/intl/fr/chrome/browser/). A questo si aggiungerà l’estensione [Advanced Rest Client] . Si potrà procedere come segue:
- visitare il sito di [Google Web store] (https://chrome.google.com/webstore) con il browser Chrome;
- cercare l’applicazione [Advanced Rest Client]:
![]() |
- l’applicazione è quindi disponibile per il download:
![]() |
- per scaricarla, è necessario creare un account Google. [Google Web Store] richiede quindi la conferma [1]:
![]() |
- In [2], l’estensione aggiunta è disponibile nell’opzione [Applications] [3]. Questa opzione viene visualizzata su ogni nuova scheda che create (CTRL-T) nel browser.
1.4. Gli esempi
La maggior parte degli esempi didattici si limiterà al solo livello Web:
![]() |
Una volta completato questo percorso di apprendimento, presenteremo un’applicazione web multistrato:
![]() |











