ScottGu ha annunciato il rilasciato della preview 5 di ASP.NET MVC, che potete scaricare da CodePlex a questo link. Ora che è da poco uscita la SP1 di Visual Studio 2008 potete provarla anche con Visual Web Developer 2008 Express SP1.

Cos’è ASP.NET MVC Framework ?

In breve ASP.NET MVC è l’implementazione del pattern MVC(Model –View- Controller) su tecnologia ASP.NET. L’uso di MVC consente, in genere, di avere una migliore e più netta separazione tra quella che è la business logic di un’applicazione rispetto all’ interfaccia utente. Questo è spesso auspicabile perché tra i vantaggi più noti, ha la possibilità di offrire una maggiore è più semplice testabilità delle parti che costituiscono il nostro componente software, abilitando a metodologie di sviluppo che spesso partono prima dalla definizione dei di test (TDD) piuttosto che dalla scrittura del codice.

ASP.NET MVC è un approccio alternativo allo sviluppo con le più classiche WebForm; è importante ricordare,però , che chi si trova bene con quest’ultime le continui ad usare tranquillamente; quando verrà rilasciato ASP.NET MVC semplicemente ci sarà una scelta in più per chi sviluppa per il web su tecnologia .NET .

Se siete interessati ad approfondire meglio la relazione tra le classiche ASP.NET WebForm e ASP.NET MVC vi posso consigliare di partire da questo articolo di Dino Esposito .

Novità della Preview 5

Le novità di questa preview sono apprezzabili da chi ha già provato a lavorare con le precedenti versioni di ASP.NET MVC. Dalla ASP.NET Codeplex Preview 5 Release Notes potete leggere le aree di novità che riguardano il View Engine, le classi dell’ Helper ed il controller.

In particolare nel post-tutorial, ScottGu, ne mette in luce le novità relativamente ad uno scenario di validazione di un prodotto da inserire nel database. In questo scenario due nuovi attributi da usare [ActionName] e [AcceptVerbs] consentono di modificare il comportamento dei metodi implementati dal controller, consentendo di decidere quali di questi chiamare in base al verbo http invocato e anche in base alla action, quindi parte dell’url, che il browser invoca. Tali attributi consentono di migliorare il codice scritto ripulendolo da clausole if/then che si sarebbero rese necessarie.

Continuando l’esempio viene presentata un’ implementazione di ModelBinder, che consente di deserializzare, a partire dalla richiesta http, i parametri che servono per costruire un oggetto di business. Registrando il Model Binder opportuno, quindi, mi trovo un oggetto di business, ad esempio un prodotto, popolato a partire dai parametri della chiamata http. Lo scenario ora descritto va bene quando devo costruire un oggetto, ad esempio perché devo fare una insert del nuovo prodotto.

Inoltre con [Try]UpdateModel posso fare l’operazione complementare: se voglio fare un’ operazione di Update di un prodotto, supponendo, in questo caso, di avere il mio prodotto ritornato da una query (ad esempio usando LINQ to SQL o LINQ to Entities) posso aggiornare, tramite i suddetti metodi, alcune proprietà del mio oggetto prodotto usando una semplice chiamata. Il metodo UpdateModel ha una versione in overload che consente il passaggio di parametri “artificiali”, cioè che ne consentono un facile unit test anche senza effetuare la chiamata di POST http che l’applicazione web eseguirebbe.

E’ stato anche migliorato il modo di gestire gli errori, consentendone una più agevole gestione nella UI, facilitando il passaggio degli stessi che sono intercettati nei metodi del Controller e poi visualizzati nella View.

Una nuova interfaccia IRuleEntity che l’oggetto di business in questione può implementare consente di aggiungere delle regole di validazione custom: ad esempio lo UnitPrice del prodotto non può essere inferiore a 1. Le regole di validazione vengono così aggiunte a livello del Model dell’applicazione, tramite un partial method, perfetto per queste occasioni. Tramite questa interfaccia le regole di validazione non sono aggiunte direttamente nella UI, come si sarebbe tentati di fare, ma possono poi essere a questa notificate. Anche le Busisness Rule sono testabili separatamente dall’applicazione stessa.

Per dare i vostri feedback

Per chi di voi è interessato a dare feedback su ASP.NET MVC può farlo tramite l’apposito MVC forums .

-Pietro