Skip to content

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:

  1. 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.
  2. 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];
  1. 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:

 
  • 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: