ASP.NET MVC 3:Se non ora, quando?<br />Giorgio Di Nardo<br />giorgio.dinardo@domusdotnet.org<br />http://blogs.ugidotnet.o...
Agenda<br />Uno sguardo:<br />al passato… (cos’è ASP.NET MVC)		 10 min<br />…al presente… (le novità della versione 3)	 ...
Cos’è ASP.NET MVC?<br />Un nuovo tipo di progetto disponibile in Visual Studio per applicazioni web<br />L’implementazione...
Breve storia di ASP.NET MVC<br />ASP.NET MVC 1.0<br />Prototype: Feb 2007<br />CTP: Dic 2007<br />Beta: Ott 2008<br />RC: ...
Cos’è MVC?<br />È un pattern architetturale<br />Punta alla separazione delle responsabilità (SoC)<br />È composto dalla t...
Come funziona Model2?<br />Client<br />Server<br />View<br />Model<br />Utente(browser)<br />Controller<br />
Ciclo di vita di una richiesta in ASP.NET<br />ASP.NETruntime<br />ASP.NETWeb Forms<br />HTTP  HandlerASP.pagina_aspx<br /...
Ciclo di vita di una richiesta con ASP.NET MVC<br />
Pilastri di ASP.NET MVC<br />Separationofconcerns (SoC)<br />Ogni componente ha il suo ruolo preciso<br />Don’t repeatyour...
demo<br />
Novità di ASP.NET MVC 3<br />NuGet<br />Razor<br />DependencyInjection<br />Scaffolding<br />Model Validation<br />HelperM...
NuGet<br />Aggiungere un riferimento senza NuGet<br />Aggiungere un riferimento con NuGet<br />
demo<br />
NuGet<br />Un Package Manager per .NET e Visual Studio<br />Installabiletramite Extension Manager<br />Utilizzabiletramite...
Razor<br />Nuovo View Engine con sintassi concisa<br />Risponde all’esigenza di sostituire la sintassi macchinosa del WebF...
demo<br />
Razor<br />Compatto, espressivo, fluido<br />Facile da apprendere<br />Non richiede di impararenuovolinguaggio<br />Utiliz...
Scaffolding<br />Generazione automatica di codice MVC<br />Utile per:<br />Studiare un esempio funzionante<br />Avere una ...
demo<br />
DependencyInjection<br />Consente di risolvere i problemi di dipendenza<br />Concretizzazione del pattern astratto Inversi...
demo<br />
Model Validation<br />In MVC validare i dati = validare il Model<br />Data Annotation come approccio di base<br />Stile di...
Model Validation<br />
Model Validation<br />Quando avviene?<br />In automatico durante il Model Binding<br />A richiesta con il metodo TryUpdate...
Model Validation<br />
demo<br />
Novità di ASP.NET MVC 3<br />HelperMethods<br />UnobtrusiveJavascript<br />JSON Model Binding<br />Granular Input Validati...
RoadMap di ASP.NET MVC 4<br />L’obiettivo ambizioso è quello di «rendere MVC 4 la miglior piattaforma per creare rich web ...
Recipe<br />Dialog box scaricabili via NuGet che automatizzano passo dopo passo la realizzazione di un particolare task (g...
Mobile support<br /><ul><li>Implementare un supporto first-class per il mobile</li></ul>Markup e CSS pensati per scalare b...
Task and Task<T> Support for AsyncController Classes<br />Supporto alla keyword await per la programmazione asincrona<br />
Risorse<br />ASP.NET MVC<br />Home Page: http://www.asp.net/mvc/<br />Forum: http://forums.asp.net/1146.aspx<br />Codice s...
Risorse<br />Libri<br />Programming Microsoft ASP.NET MVC (Microsoft)<br />Professional ASP.NET MVC 3 (Wrox)<br />Pro ASP....
ASP.NET MVC 3:Se non ora, quando?<br />Giorgio Di Nardo<br />giorgio.dinardo@domusdotnet.org<br />http://blogs.ugidotnet.o...
Upcoming SlideShare
Loading in …5
×

ASP.NET MVC 3: se non ora, quando?

1,917 views

Published on

Sessione su ASP.NET MVC 3 al Community Live 2011 [13 Set 2011]

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,917
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ASP.NET MVC 3: se non ora, quando?

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

×