Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
ASP.NET MVC
1. ASP.NET MVC 2 Raffaele Fanizzi MCPD & MCTS www.vifani.com
2. Agenda Design Pattern MVC ASP.NET MVC 2 Overview HTML Helper Validazione MVC vs WebForm Il futuro MVC 3 Q&A
3. Design Pattern MVC Cosa è un design pattern? Definisce la soluzione ad un problema ricorrente di ingegneria del software Serve 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 MVC Il ModelView Controller (MVC) nasce nel 1979 ad opera di TrygveReenskaug (Xerox PARC) E’ un design pattern dedicato al presentationlayer Separationofconcerns Ha l’obiettivo di strutturare il software al fine di separare la logica applicativa dall’interfaccia utente
5. Design Pattern MVC Riceve l’input dall’utente e invoca operazioni sul modello definendo la view che ne visualizzerà lo stato Effettua un cambiamento di stato richiamato dal controller e lo notifica alla view Descrive la visualizzazione del modello
6. Design Pattern MVC Controller: è l’orchestratore che definisce quale cambiamento di stato del modello richiamare in base all’input dell’utente Model: definisce i dati ed il loro comportamento View: definisce il modo in cui il modello deve essere rappresentato
7. Design Pattern MVC Perché MVC? Separationofconcerns!!! Sviluppo indipendente Testabilità Manutenibilità
8. ASP.NET MVC 2 E’ l’implementazione di Microsoft del pattern MVC applicata allo sviluppo web Storia 13/03/2009 – ASP.NET MVC 1.0 10/03/2010 – ASP.NET MVC 2.0 E’ open source rilasciato sotto licenza Microsoft Public License Di cosa abbiamo bisogno? .NET Framework 3.5 SP1 o superiore Visual Studio 2008 + SDK Visual Studio 2010
10. ASP.NET MVC 2 View: pagine ASPX o ASCX che definiscono come viene renderizzato un modello Model: 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
12. HTML Helper C’erano una volta i tagrunat=“server” di ASP.NET… …adesso abbiamo gli HTML helper Evitano di dover scrivere a mano i tag HTML Particolarmente utili nella generazione di Form (anche con template) Link Rendering di view e action
14. HTML Helper In ASP.NET MVC le view possono essere non tipizzate o tipizzatedipendentemente dal fatto che il modello che renderizzano è o meno ben definito Se 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 lambaexpression Refactoring più semplice
16. Validazione Si basa sugli attributi presenti nel namespaceSystem.ComponentModel.DataAnnotations introdotto nel .NET Framework 3.5 SP1 Esiste un attributo per ogni regola di validazione messa a disposizione dal framework: Required StringLength Range RegularExpression Si applica al modello definendo una classe di metadati referenziata attraverso l’attributo MetadataType
19. MVC vs WebForm ASP.NET MVC e WebForm non sono due API in conflitto Rappresentano un modo diverso di fare web application Rispondono ad esigenze differenti Hanno entrambi i loro pregi e difetti
21. MVC vs WebForm Pregi di ASP.NETWebForm Risolve un enorme problema: la natura stateless del protocollo HTTP API stabile e matura Disponibili tantissimi controlli di terze parti RAD Porta sul web la programmazione event-driven Racchiude l’intero web stack in un ricco object-model Conoscere HTML, CSS e Javascript non è un requisito per usare ASP.NETWebForm AdaptiveRendering
22. MVC vs WebForm Difetti di ASP.NETWebForm Programmazione event-driven => difficoltà nell’eseguire la SeparationofConcerns Difficile da testare in modo automatico Generazione automatica HTML == scarso controllo sull’output Problemi di compatibilità con i browser Accessibilità Poco SEO Friendly Button e LinkButton sono difficili da tracciare per gli spider URL spesso poco significativi Il ViewState può abbassare il rank delle pagine
24. MVC vs WebForm Pregi di ASP.NET MVC Separationofconcerns Si progettano le view, i controller e il modello Si accede al middle-tier dal controller Pieno controllo sull’output generato: HTML, Javascript e CSS SEO Friendlyby design Piena testabilità => è possibile il TDD
25. MVC vs WebForm Difetti di ASP.NET MVC Peggiore curva di apprendimento Sfavorisce l’apprendimento da sperimentazione Richiede che il software sia progettato Richiede skill forti su HTML, CSS e Javascript Meno maturo di WebForm Due release in due anni, la terza sta arrivando Pochi helper di terze parti
26. Il futuro MVC 3 Attualmente in Release Candidate Non ci sono particolari breakingchanges Migliorato il processo “New Project” SessionlessControllers Nuovi attributi di validazione (Compare, Remote) Cache delle azioni del controller Supporto delle nuove librerie jQueryUnobtrusive per la validazione ed AJAX Nuovo viewengineRazor Miglior supporto alla DependencyInjection
27. Risorse Sito ufficiale ASP.NET MVChttp://www.asp.net/mvc Source code ASP.NET MVChttp://aspnet.codeplex.com Release Candidate ASP.NET MVC 3http://www.asp.net/mvc/mvc3 MSDNhttp://msdn.microsoft.com Il mio bloghttp://www.vifani.com