SlideShare una empresa de Scribd logo
1 de 34
ASP.NET MVC 3:Se non ora, quando? Giorgio Di Nardo giorgio.dinardo@domusdotnet.org http://blogs.ugidotnet.org/akelitz @akelitz
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
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
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
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
Come funziona Model2? Client Server View Model Utente(browser) Controller
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
Ciclo di vita di una richiesta con ASP.NET MVC
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)
demo
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
NuGet Aggiungere un riferimento senza NuGet Aggiungere un riferimento con NuGet
demo
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)
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
demo
Razor Compatto, espressivo, fluido Facile da apprendere Non richiede di impararenuovolinguaggio Utilizzabile con ogni editor di testo Completo supporto Intellisense
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
demo
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
demo
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
Model Validation
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
Model Validation
demo
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
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 …
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.)
Mobile support ,[object Object],Markup e CSS pensati per scalare bene e nuovi Project template Possibilità di creare viste con il suffisso .Mobile
Task and Task<T> Support for AsyncController Classes Supporto alla keyword await per la programmazione asincrona
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/
Risorse Libri Programming Microsoft ASP.NET MVC (Microsoft) Professional ASP.NET MVC 3 (Wrox) Pro ASP.NET MVC 3 Framework(Apress)
ASP.NET MVC 3:Se non ora, quando? Giorgio Di Nardo giorgio.dinardo@domusdotnet.org http://blogs.ugidotnet.org/akelitz @akelitz

Más contenido relacionado

La actualidad más candente

Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Salvatore Laisa
 
ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008
Fabrizio Bernabei
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
DotNetMarche
 

La actualidad más candente (20)

Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008
 
Progettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignProgettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web Design
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Workshop angular
Workshop angularWorkshop angular
Workshop angular
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0
 
Wasm and Blazor CDays keynote
Wasm and Blazor CDays keynoteWasm and Blazor CDays keynote
Wasm and Blazor CDays keynote
 
Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6
 
Integrazione con Visual Studio Online
Integrazione con Visual Studio OnlineIntegrazione con Visual Studio Online
Integrazione con Visual Studio Online
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
MVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.Micro
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developers
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Asp.Net MVC 5
Asp.Net MVC 5Asp.Net MVC 5
Asp.Net MVC 5
 

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

Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
DotNetCampus
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
Stefano Ottaviani
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
Crismer La Pignola
 

Similar a ASP.NET MVC 3: se non ora, quando? (20)

Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
ASP.NET MVC Intro
ASP.NET MVC IntroASP.NET MVC Intro
ASP.NET MVC Intro
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
MVC2: non solo tecnologia
MVC2: non solo tecnologiaMVC2: non solo tecnologia
MVC2: non solo tecnologia
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
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
  • 6. Come funziona Model2? Client Server View Model Utente(browser) Controller
  • 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
  • 8. Ciclo di vita di una richiesta con ASP.NET MVC
  • 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)
  • 10. demo
  • 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
  • 13. demo
  • 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
  • 16. demo
  • 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
  • 19. demo
  • 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
  • 21. demo
  • 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
  • 26. demo
  • 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