SlideShare a Scribd company logo
ASP.NET MVC 2Raffaele FanizziMCPD & MCTSwww.vifani.com
AgendaDesign Pattern MVCASP.NET MVC 2OverviewHTML HelperValidazioneMVC vs WebFormIl futuro MVC 3Q&A
Design Pattern MVCCosa è un design pattern?Definisce la soluzione ad un problema ricorrente di ingegneria del softwareServe a migliorare la qualità, la testabilità, la manutenibilità, l’estendibilità, la leggibilità…Non va scelto ed usato per moda: deve risolvere un problema che esiste e non aiutarvi a crearne uno che non esiste Evitate l’over-engeneering
Design Pattern MVCIl ModelView Controller (MVC) nasce nel 1979 ad opera di TrygveReenskaug (Xerox PARC)E’ un design pattern dedicato al presentationlayerSeparationofconcernsHa l’obiettivo di strutturare il software al fine di separare la logica applicativa dall’interfaccia utente
Design Pattern MVCRiceve l’input dall’utente e invoca operazioni sul modello definendo la view che ne visualizzerà lo statoEffettua un cambiamento di stato richiamato dal controller e lo notifica alla viewDescrive la visualizzazione del modello
Design Pattern MVCController: è l’orchestratore che definisce quale cambiamento di stato del modello richiamare in base all’input dell’utenteModel: definisce i dati ed il loro comportamentoView: definisce il modo in cui il modello deve essere rappresentato
Design Pattern MVCPerché MVC? Separationofconcerns!!!Sviluppo indipendenteTestabilitàManutenibilità
ASP.NET MVC 2E’ l’implementazione di Microsoft del pattern MVC applicata allo sviluppo webStoria13/03/2009 – ASP.NET MVC 1.010/03/2010 – ASP.NET MVC 2.0E’ open source rilasciato sotto licenza Microsoft Public LicenseDi cosa abbiamo bisogno?.NET Framework 3.5 SP1 o superioreVisual Studio 2008 + SDKVisual Studio 2010
ASP.NET MVC 2
ASP.NET MVC 2View: pagine ASPX o ASCX che definiscono come viene renderizzato un modelloModel: classi di qualsiasi tipo che contengono i dati che devono essere visualizzati mediante una view (spesso si parla di ViewModel)Controller: classi che ereditano dalla classe base Controller
ASP.NET MVC 2passiamo dalla teoria alla pratica 
HTML HelperC’erano una volta i tagrunat=“server” di ASP.NET……adesso abbiamo gli HTML helperEvitano di dover scrivere a mano i tag HTMLParticolarmente utili nella generazione diForm (anche con template)LinkRendering di view e action
HTML Helper
HTML HelperIn ASP.NET MVC le view possono essere non tipizzate o tipizzatedipendentemente dal fatto che il modello che renderizzano è o meno ben definitoSe la view che si sta costruendo è tipizzata, allora per tutti gli HTML Helper che fanno riferimento a proprietà del modello con una stringa, esiste la controparte (con suffisso “For”) in cui è possibile utilizzare una lambaexpressionRefactoring più semplice
ASP.NET MVC 2newHtmlHelperDemo().Show()
ValidazioneSi basa sugli attributi presenti nel namespaceSystem.ComponentModel.DataAnnotations introdotto nel .NET Framework 3.5 SP1Esiste un attributo per ogni regola di validazione messa a disposizione dal framework:RequiredStringLengthRangeRegularExpressionSi applica al modello definendo una classe di metadati referenziata attraverso l’attributo MetadataType
ValidazionePer applicare le regole di validazionePer associare la classe dei metadata al modelloValidazioneClient Side: è necessario referenziare nelle view i seguenti file javascriptMicrosoftAjax.jsMicrosoftMvcAjax.jsMicrosoftMvcValidation.js… ed inserire il tag<% Html.EnableClientValidation();%>Server Side: si basa sull’interrogazione della proprietà ModelState del controller
ASP.NET MVC 2(demo) => { demo.ShowValidation(); }
MVC vs WebFormASP.NET MVC e WebForm non sono due API in conflittoRappresentano un modo diverso di fare web applicationRispondono ad esigenze differentiHanno entrambi i loro pregi e difetti
MVC vs WebForm
MVC vs WebFormPregi di ASP.NETWebFormRisolve un enorme problema: la natura stateless del protocollo HTTPAPI stabile e maturaDisponibili tantissimi controlli di terze partiRADPorta sul web la programmazione event-drivenRacchiude l’intero web stack in un ricco object-modelConoscere HTML, CSS e Javascript non è un requisito per usare ASP.NETWebFormAdaptiveRendering
MVC vs WebFormDifetti di ASP.NETWebFormProgrammazione event-driven => difficoltà nell’eseguire la SeparationofConcernsDifficile da testare in modo automaticoGenerazione automatica HTML == scarso controllo sull’outputProblemi di compatibilità con i browserAccessibilitàPoco SEO FriendlyButton e LinkButton sono difficili da tracciare per gli spiderURL spesso poco significativiIl ViewState può abbassare il rank delle pagine
MVC vs WebFormQuando usare MVC?
MVC vs WebFormPregi di ASP.NET MVCSeparationofconcernsSi progettano le view, i controller e il modelloSi accede al middle-tier dal controllerPieno controllo sull’output generato: HTML, Javascript e CSSSEO Friendlyby designPiena testabilità => è possibile il TDD
MVC vs WebFormDifetti di ASP.NET MVCPeggiore curva di apprendimentoSfavorisce l’apprendimento da sperimentazioneRichiede che il software sia progettatoRichiede skill forti su HTML, CSS e JavascriptMeno maturo di WebFormDue release in due anni, la terza sta arrivandoPochi helper di terze parti
Il futuro MVC 3Attualmente in Release CandidateNon ci sono particolari breakingchangesMigliorato il processo “New Project”SessionlessControllersNuovi attributi di validazione (Compare, Remote)Cache delle azioni del controllerSupporto delle nuove librerie jQueryUnobtrusive per la validazione ed AJAXNuovo viewengineRazorMiglior supporto alla DependencyInjection
RisorseSito ufficiale ASP.NET MVChttp://www.asp.net/mvcSource code ASP.NET MVChttp://aspnet.codeplex.comRelease Candidate ASP.NET MVC 3http://www.asp.net/mvc/mvc3MSDNhttp://msdn.microsoft.comIl mio bloghttp://www.vifani.com
Domande?
Grazie per l’attenzione
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation.  Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.  MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ASP.NET MVC

More Related Content

What's hot (20)

PDF
NOSQL
Manuel Scapolan
 
PDF
AntiPatterns: i vizi del programmatore
Manuel Scapolan
 
PDF
MVC and Struts 1
Tarin Gamberini
 
ODP
April 2010 - Seam unifies JEE5
JBug Italy
 
PPT
Introduzione a jQuery
Sandro Marcon
 
PPTX
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
PDF
Introduzione a Struts
Andrea Colleoni
 
PPTX
Asp.Net MVC 5
Emanuele Bartolesi
 
PPTX
Asp.NET MVC Framework
DotNetMarche
 
PDF
Hands on MVC - Mastering the Web
Claudio Gandelli
 
PDF
Blazor: are we ready for the launch?
Andrea Agnoletto
 
PPTX
Applicazioni web con Asp.Net MVC 6
Michele Aponte
 
PPTX
Meetup ASP.NET Core Angular
dotnetcode
 
PDF
Modulo 6 Spring Framework Core E Aop
jdksrl
 
PDF
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Valerio Radice
 
PPTX
SmartClient by Isomorphic - Rich internet applications
Claudio Bosticco
 
PPTX
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
 
PPT
What's New in ASP.NET 4.5 and Visual Studio 2012
Andrea Dottor
 
PPTX
Cert03 70-486 developing asp.net mvc 4 web applications
DotNetCampus
 
AntiPatterns: i vizi del programmatore
Manuel Scapolan
 
MVC and Struts 1
Tarin Gamberini
 
April 2010 - Seam unifies JEE5
JBug Italy
 
Introduzione a jQuery
Sandro Marcon
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
Introduzione a Struts
Andrea Colleoni
 
Asp.Net MVC 5
Emanuele Bartolesi
 
Asp.NET MVC Framework
DotNetMarche
 
Hands on MVC - Mastering the Web
Claudio Gandelli
 
Blazor: are we ready for the launch?
Andrea Agnoletto
 
Applicazioni web con Asp.Net MVC 6
Michele Aponte
 
Meetup ASP.NET Core Angular
dotnetcode
 
Modulo 6 Spring Framework Core E Aop
jdksrl
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Valerio Radice
 
SmartClient by Isomorphic - Rich internet applications
Claudio Bosticco
 
DotNetCampus - Continuous Integration con Sql Server
Alessandro Alpi
 
What's New in ASP.NET 4.5 and Visual Studio 2012
Andrea Dottor
 
Cert03 70-486 developing asp.net mvc 4 web applications
DotNetCampus
 

Viewers also liked (7)

PDF
春休み企画
Hiroaki Murayama
 
PPSX
Mak - an introduction
makmediacreations
 
PDF
iOS勉強会
Hiroaki Murayama
 
PPTX
Hieu Xamarin iOS9, Android M 3-11-2015
Nguyen Hieu
 
PPTX
ADO.NET Entity Framework 4
Raffaele Fanizzi
 
PPT
Mak an Introductionz
makmediacreations
 
春休み企画
Hiroaki Murayama
 
Mak - an introduction
makmediacreations
 
iOS勉強会
Hiroaki Murayama
 
Hieu Xamarin iOS9, Android M 3-11-2015
Nguyen Hieu
 
ADO.NET Entity Framework 4
Raffaele Fanizzi
 
Mak an Introductionz
makmediacreations
 
Ad

Similar to ASP.NET MVC (20)

PPTX
Asp.Net MVC 2 :: VS 2010 Community Tour
Andrea Balducci
 
PPTX
ASP.NET MVC 2.0
XeDotNet
 
PDF
ASP.NET MVC Intro
Manuel Scapolan
 
PPTX
MVC2: non solo tecnologia
Andrea Saltarello
 
PDF
ASP.NET MVC: Full Throttle
Andrea Saltarello
 
PDF
ASP.NET MVC 3 - Trasportare i dati nel Model
Manuel Scapolan
 
PDF
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
Marco Parenzan
 
PPTX
Novità di Asp.Net 4.0
Gian Maria Ricci
 
PDF
ASP.NET
Manuel Scapolan
 
PDF
ASP.NET Core - dove siamo arrivati
Andrea Dottor
 
PPTX
ASP.NET MVC 6 - uno sguardo al futuro
Andrea Dottor
 
PPT
Esempi pratici
DotNetMarche
 
PPTX
We Want Web - Web Applications con MVC 3
DomusDotNet
 
PPTX
Inversion of Control @ CD2008
Mauro Servienti
 
PPTX
Asp.net web form 4.5 - what's new!!
Massimo Bonanni
 
PDF
ASP.NET MVC3 - Tutti i compiti del Controller
Manuel Scapolan
 
PPTX
m-v-vm @ UgiAlt.Net
Mauro Servienti
 
PDF
AreaMVC: un'architettura software basata sulla semplicità
Giulio Destri
 
PPTX
Introduzione ad ASP.NET Core
Andrea Dottor
 
PPTX
Il buon programmatore - consigli pratici per una vita felice
Andrea Dottor
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Andrea Balducci
 
ASP.NET MVC 2.0
XeDotNet
 
ASP.NET MVC Intro
Manuel Scapolan
 
MVC2: non solo tecnologia
Andrea Saltarello
 
ASP.NET MVC: Full Throttle
Andrea Saltarello
 
ASP.NET MVC 3 - Trasportare i dati nel Model
Manuel Scapolan
 
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
Marco Parenzan
 
Novità di Asp.Net 4.0
Gian Maria Ricci
 
ASP.NET Core - dove siamo arrivati
Andrea Dottor
 
ASP.NET MVC 6 - uno sguardo al futuro
Andrea Dottor
 
Esempi pratici
DotNetMarche
 
We Want Web - Web Applications con MVC 3
DomusDotNet
 
Inversion of Control @ CD2008
Mauro Servienti
 
Asp.net web form 4.5 - what's new!!
Massimo Bonanni
 
ASP.NET MVC3 - Tutti i compiti del Controller
Manuel Scapolan
 
m-v-vm @ UgiAlt.Net
Mauro Servienti
 
AreaMVC: un'architettura software basata sulla semplicità
Giulio Destri
 
Introduzione ad ASP.NET Core
Andrea Dottor
 
Il buon programmatore - consigli pratici per una vita felice
Andrea Dottor
 
Ad

More from Raffaele Fanizzi (7)

PPTX
Introduction to iOS development with Xamarin
Raffaele Fanizzi
 
PPTX
Mobile development .net
Raffaele Fanizzi
 
PPTX
Web Development with Visual Studio 2012
Raffaele Fanizzi
 
PPTX
Async Development con Visual Studio 2012
Raffaele Fanizzi
 
PPTX
Push Notification: come rendere vive le app su Windows Phone
Raffaele Fanizzi
 
PPTX
HTML5
Raffaele Fanizzi
 
PPTX
Dependency Injection
Raffaele Fanizzi
 
Introduction to iOS development with Xamarin
Raffaele Fanizzi
 
Mobile development .net
Raffaele Fanizzi
 
Web Development with Visual Studio 2012
Raffaele Fanizzi
 
Async Development con Visual Studio 2012
Raffaele Fanizzi
 
Push Notification: come rendere vive le app su Windows Phone
Raffaele Fanizzi
 
Dependency Injection
Raffaele Fanizzi
 

ASP.NET MVC

  • 1. ASP.NET MVC 2Raffaele FanizziMCPD & MCTSwww.vifani.com
  • 2. AgendaDesign Pattern MVCASP.NET MVC 2OverviewHTML HelperValidazioneMVC vs WebFormIl futuro MVC 3Q&A
  • 3. Design Pattern MVCCosa è un design pattern?Definisce la soluzione ad un problema ricorrente di ingegneria del softwareServe a migliorare la qualità, la testabilità, la manutenibilità, l’estendibilità, la leggibilità…Non va scelto ed usato per moda: deve risolvere un problema che esiste e non aiutarvi a crearne uno che non esiste Evitate l’over-engeneering
  • 4. Design Pattern MVCIl ModelView Controller (MVC) nasce nel 1979 ad opera di TrygveReenskaug (Xerox PARC)E’ un design pattern dedicato al presentationlayerSeparationofconcernsHa l’obiettivo di strutturare il software al fine di separare la logica applicativa dall’interfaccia utente
  • 5. Design Pattern MVCRiceve l’input dall’utente e invoca operazioni sul modello definendo la view che ne visualizzerà lo statoEffettua un cambiamento di stato richiamato dal controller e lo notifica alla viewDescrive la visualizzazione del modello
  • 6. Design Pattern MVCController: è l’orchestratore che definisce quale cambiamento di stato del modello richiamare in base all’input dell’utenteModel: definisce i dati ed il loro comportamentoView: definisce il modo in cui il modello deve essere rappresentato
  • 7. Design Pattern MVCPerché MVC? Separationofconcerns!!!Sviluppo indipendenteTestabilitàManutenibilità
  • 8. ASP.NET MVC 2E’ l’implementazione di Microsoft del pattern MVC applicata allo sviluppo webStoria13/03/2009 – ASP.NET MVC 1.010/03/2010 – ASP.NET MVC 2.0E’ open source rilasciato sotto licenza Microsoft Public LicenseDi cosa abbiamo bisogno?.NET Framework 3.5 SP1 o superioreVisual Studio 2008 + SDKVisual Studio 2010
  • 10. ASP.NET MVC 2View: pagine ASPX o ASCX che definiscono come viene renderizzato un modelloModel: classi di qualsiasi tipo che contengono i dati che devono essere visualizzati mediante una view (spesso si parla di ViewModel)Controller: classi che ereditano dalla classe base Controller
  • 11. ASP.NET MVC 2passiamo dalla teoria alla pratica 
  • 12. HTML HelperC’erano una volta i tagrunat=“server” di ASP.NET……adesso abbiamo gli HTML helperEvitano di dover scrivere a mano i tag HTMLParticolarmente utili nella generazione diForm (anche con template)LinkRendering di view e action
  • 14. HTML HelperIn ASP.NET MVC le view possono essere non tipizzate o tipizzatedipendentemente dal fatto che il modello che renderizzano è o meno ben definitoSe la view che si sta costruendo è tipizzata, allora per tutti gli HTML Helper che fanno riferimento a proprietà del modello con una stringa, esiste la controparte (con suffisso “For”) in cui è possibile utilizzare una lambaexpressionRefactoring più semplice
  • 16. ValidazioneSi basa sugli attributi presenti nel namespaceSystem.ComponentModel.DataAnnotations introdotto nel .NET Framework 3.5 SP1Esiste un attributo per ogni regola di validazione messa a disposizione dal framework:RequiredStringLengthRangeRegularExpressionSi applica al modello definendo una classe di metadati referenziata attraverso l’attributo MetadataType
  • 17. ValidazionePer applicare le regole di validazionePer associare la classe dei metadata al modelloValidazioneClient Side: è necessario referenziare nelle view i seguenti file javascriptMicrosoftAjax.jsMicrosoftMvcAjax.jsMicrosoftMvcValidation.js… ed inserire il tag<% Html.EnableClientValidation();%>Server Side: si basa sull’interrogazione della proprietà ModelState del controller
  • 18. ASP.NET MVC 2(demo) => { demo.ShowValidation(); }
  • 19. MVC vs WebFormASP.NET MVC e WebForm non sono due API in conflittoRappresentano un modo diverso di fare web applicationRispondono ad esigenze differentiHanno entrambi i loro pregi e difetti
  • 21. MVC vs WebFormPregi di ASP.NETWebFormRisolve un enorme problema: la natura stateless del protocollo HTTPAPI stabile e maturaDisponibili tantissimi controlli di terze partiRADPorta sul web la programmazione event-drivenRacchiude l’intero web stack in un ricco object-modelConoscere HTML, CSS e Javascript non è un requisito per usare ASP.NETWebFormAdaptiveRendering
  • 22. MVC vs WebFormDifetti di ASP.NETWebFormProgrammazione event-driven => difficoltà nell’eseguire la SeparationofConcernsDifficile da testare in modo automaticoGenerazione automatica HTML == scarso controllo sull’outputProblemi di compatibilità con i browserAccessibilitàPoco SEO FriendlyButton e LinkButton sono difficili da tracciare per gli spiderURL spesso poco significativiIl ViewState può abbassare il rank delle pagine
  • 23. MVC vs WebFormQuando usare MVC?
  • 24. MVC vs WebFormPregi di ASP.NET MVCSeparationofconcernsSi progettano le view, i controller e il modelloSi accede al middle-tier dal controllerPieno controllo sull’output generato: HTML, Javascript e CSSSEO Friendlyby designPiena testabilità => è possibile il TDD
  • 25. MVC vs WebFormDifetti di ASP.NET MVCPeggiore curva di apprendimentoSfavorisce l’apprendimento da sperimentazioneRichiede che il software sia progettatoRichiede skill forti su HTML, CSS e JavascriptMeno maturo di WebFormDue release in due anni, la terza sta arrivandoPochi helper di terze parti
  • 26. Il futuro MVC 3Attualmente in Release CandidateNon ci sono particolari breakingchangesMigliorato il processo “New Project”SessionlessControllersNuovi attributi di validazione (Compare, Remote)Cache delle azioni del controllerSupporto delle nuove librerie jQueryUnobtrusive per la validazione ed AJAXNuovo viewengineRazorMiglior supporto alla DependencyInjection
  • 27. RisorseSito ufficiale ASP.NET MVChttp://www.asp.net/mvcSource code ASP.NET MVChttp://aspnet.codeplex.comRelease Candidate ASP.NET MVC 3http://www.asp.net/mvc/mvc3MSDNhttp://msdn.microsoft.comIl mio bloghttp://www.vifani.com
  • 30. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.