Matteo Baglini e Mario Martellini ci presentano ASP.NET MVC, il nuovo framework per sviluppare applicazioni web secondo il pattern Model-View-Controller,utilizzando url seo friendly, rendendo il codice facile da testare.
Il pattern MVC isola la logica applicativa dalla UI fornendo semplicità, manutenibilità e testabilità. Dal browser parte una richiesta che viene processata dal motore di routing (viene analizzato l’url richiesto) che seleziona il controller appropriato per la richiesta. Il controller esegue le operazioni sul model e seleziona la view da visualizzare in risposta alla richiesta.
Requisiti minimi: VS2008 SP1 + installazione del framework MVC. Da nuovo progetto possiamo creare attraverso il template installato un nuovo progetto MVC, grazie al quale viene creata la struttura del sito. Troviamo tre principali cartelle
-
Controllers: che conterrà i controller per le varie richieste
-
Models: che conterrà la logica di business
-
Views: le pagine aspx che rappresentano le view, con una sottocartella per ogni controller (stesso nome del controller senza la dicitura Controller)
Le view possono essere di due tipi: tipizzate e non. Quelle tipizzate permettono l’accesso ai dati in maniera tipizzata, quelle non tipizzate utilizzano l’oggetto ViewData insieme a degli HTML Helper.
Supponendo di avere già un model (nel nostro caso Linq.to Sql su northwind + un’interfaccia e una classicina che interrogano i dati per noi) si parte dalla creazione del controller di una determinata richiesta, rispettando la convenzione <nome>Controller. Visual Studio ci permette di creare già i metodi per le classiche operazioni CRUD, che noi andremo ad implementare invocando il nostro model. A questo punto creiamo le View: nella cartella Views, cartella col nome del nostro controller, aggiungiamo una nuova pagina aspx, che chiamiamo con lo stesso nome del metodo del controller che la gestisce. Visual studio ci chiede se vogliamo usare un template particolare nella generazione della view, in modo da evitarci parte della scrittura del codice della view.
Uno dei vantaggi di questo meccanismo è che è semplice testare la logica applicativa testando individualmente i vari controller che compongono il progetto, sostituendoci alle view con degli Unit Test: creiamo un test class per ogni controller e un test method per ogni metodo del controller, in cui instanziamo il controller che vogliamo testare e ne invochiamo il metodo interessato dal test. L’invocazione di un metodo del controller ci restituisce il ViewResult che noi possiamo analizzare per realizzare le nostre Assert. Per svincolare i nostri test dal database utilizzato realizziamo un’implemetazione fake dell’interfaccia del nostro model.
Volendo confrontare MVC con WebForm possiamo dire:
ASP.NET MVC:
-
semplicità
-
basato su convenzioni
-
completamente estendibile
-
facilmente testabile
-
pieno controllo dell’html ed il javascript
-
adatto a scenari SEO e REST
-
Open Source
ASP.NET WebForm
Hanno in comune:
Quale utilizzare? Come al solito… Dipende!