Design pattern architetturali Model View Controller, MVP e MVVM
ASP.NET MVC 3: se non ora, quando?
1. ASP.NET MVC 3:Se non ora, quando? Giorgio Di Nardo giorgio.dinardo@domusdotnet.org http://blogs.ugidotnet.org/akelitz @akelitz
2. Agenda Uno sguardo: al passato… (cos’è ASP.NET MVC) 10 min …al presente… (le novità della versione 3) 30 min NuGet Razor Scaffolding DependencyInjection Model Validation … … e al futuro (roadmapdella versione 4) 5 min
3. Cos’è ASP.NET MVC? Un nuovo tipo di progetto disponibile in Visual Studio per applicazioni web L’implementazione Microsoft del pattern architetturale MVC (Model 2) Un’alternativa in più a nostra disposizione Non sostituisce Web Forms Auto o moto? Cambio manuale o automatico? Progettato sulla stessa piattaforma ASP.NET
4. Breve storia di ASP.NET MVC ASP.NET MVC 1.0 Prototype: Feb 2007 CTP: Dic 2007 Beta: Ott 2008 RC: Gen 2009 RTW: Mar 2009 ASP.NET MVC 2 CTP: Lug 2009 Beta: Nov 2009 RC: Dic 2009 RTM: Mar 2010 ASP.NET MVC 3 CTP: Lug 2010 Beta: Ott 2010 RC: Nov 2010 RTM: Gen 2011
5. Cos’è MVC? È un pattern architetturale Punta alla separazione delle responsabilità (SoC) È composto dalla triade Model-View-Controller Model: rappresenta i dati e le regole per manipolarli View: è l’interfaccia utilizzata per presentare tali dati Controller: si occupa di gestire l’interazione tra l’utente e il sistema È stato declinato in diverse varianti tra cui Model2
7. Ciclo di vita di una richiesta in ASP.NET ASP.NETruntime ASP.NETWeb Forms HTTP HandlerASP.pagina_aspx Pagina.aspx HTML ASP.NETMVC HTTP Module URL Routing HTTP Handler MVCHandler View ProdottiController Prodotti/1
9. Pilastri di ASP.NET MVC Separationofconcerns (SoC) Ogni componente ha il suo ruolo preciso Don’t repeatyourself (DRY) Testabile Tutti i componenti sono facilmente mockabili Pieno supporto alla DependencyInjection (DI) Non richiede che l’applicazione giri nel processo ASP.NET Estensibile e flessibile Tutti i componenti sono liberamente sostituibili Convention overconfiguration (CoC)
11. Novità di ASP.NET MVC 3 NuGet Razor DependencyInjection Scaffolding Model Validation HelperMethods UnobtrusiveJavascript JSON Model Binding Granular Input Validation Global Action Filters ViewBag Nuovi Action Result SessionlessControllers Partial Page Output Cache Html.Raw
12. NuGet Aggiungere un riferimento senza NuGet Aggiungere un riferimento con NuGet
14. NuGet Un Package Manager per .NET e Visual Studio Installabiletramite Extension Manager Utilizzabiletramite: GUI Console PowerShell Tool a riga di comando Supportasorgenti multiple (pubbliche e private)
15. Razor Nuovo View Engine con sintassi concisa Risponde all’esigenza di sostituire la sintassi macchinosa del WebForms Evita lo spaghetti-code La chiave è nel carattere @ che consente una transizione rapida da HTML a C#... …e nell’intelligenza del parser nel gestire la transizione inversa
17. Razor Compatto, espressivo, fluido Facile da apprendere Non richiede di impararenuovolinguaggio Utilizzabile con ogni editor di testo Completo supporto Intellisense
18. Scaffolding Generazione automatica di codice MVC Utile per: Studiare un esempio funzionante Avere una base di partenza da sviluppare Utilizzabile in modalità Console o GUI Basato su Template T4 e PowerShell Estensibile e personalizzabile
20. DependencyInjection Consente di risolvere i problemi di dipendenza Concretizzazione del pattern astratto Inversion-of-Control Supporto nativo in MVC tramite IDependencyResolver Consente di incapsulare facilmente uno IoC Container Molte implementazioni sono disponibili su NuGet
22. Model Validation In MVC validare i dati = validare il Model Data Annotation come approccio di base Stile dichiarativo = attributi Non solo validazione ma anche per UI Supporto sia lato-server che lato-client Localizzazione automatica con la possibilità di usare file di risorse
24. Model Validation Quando avviene? In automatico durante il Model Binding A richiesta con il metodo TryUpdateModel Come si verificano i risultati? Proprietà ModelState.IsValid del Controller In automatico tramite HTML helpers Come personalizzare? Definendo nuovi attributi Inserendo la validazione all’interno del Model
27. Novità di ASP.NET MVC 3 HelperMethods UnobtrusiveJavascript JSON Model Binding Granular Input Validation Global Action Filters ViewBag Nuovi Action Result SessionlessControllers Partial Page Output Cache Html.Raw
28. RoadMap di ASP.NET MVC 4 L’obiettivo ambizioso è quello di «rendere MVC 4 la miglior piattaforma per creare rich web applications» Ajax HTML5, Tablet e Mobile Cloud Alcune nuove caratteristiche Recipe Mobile Support Task and Task<T> Support for AsyncControllerClasses …
29. Recipe Dialog box scaricabili via NuGet che automatizzano passo dopo passo la realizzazione di un particolare task (griglie Ajax, autenticazione claim-based con WIF, ecc.)
30.
31. Task and Task<T> Support for AsyncController Classes Supporto alla keyword await per la programmazione asincrona
32. Risorse ASP.NET MVC Home Page: http://www.asp.net/mvc/ Forum: http://forums.asp.net/1146.aspx Codice sorgente: http://aspnet.codeplex.com/ MVC Contrib: http://mvccontrib.codeplex.com/ Blog Scott Guthrie: http://weblogs.asp.net/scottgu/ Phil Haack: http://haacked.com/ Brad Wilson: http://bradwilson.typepad.com/ Scott Hanselman: http://www.hanselman.com/
33. Risorse Libri Programming Microsoft ASP.NET MVC (Microsoft) Professional ASP.NET MVC 3 (Wrox) Pro ASP.NET MVC 3 Framework(Apress)
34. ASP.NET MVC 3:Se non ora, quando? Giorgio Di Nardo giorgio.dinardo@domusdotnet.org http://blogs.ugidotnet.org/akelitz @akelitz