SlideShare a Scribd company logo
1 of 31
ASP.NET MVC 2 Raffaele Fanizzi MCPD & MCTS www.vifani.com
Agenda Design Pattern MVC ASP.NET MVC 2 Overview HTML Helper Validazione MVC vs WebForm Il futuro MVC 3 Q&A
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
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
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
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
Design Pattern MVC Perché MVC?  Separationofconcerns!!! Sviluppo indipendente Testabilità Manutenibilità
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
ASP.NET MVC 2
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
ASP.NET MVC 2 passiamo dalla teoria alla pratica 
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
HTML Helper
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
ASP.NET MVC 2 newHtmlHelperDemo().Show()
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
Validazione Per applicare le regole di validazione ,[object Object],[object Object]
ASP.NET MVC 2 (demo) => { demo.ShowValidation(); }
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
MVC vs WebForm
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
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
MVC vs WebForm Quando usare MVC?
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
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
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
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
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

AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5JBug Italy
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
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 6Michele Aponte
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aopjdksrl
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsClaudio Bosticco
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
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 2012Andrea Dottor
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 

What's hot (20)

NOSQL
NOSQLNOSQL
NOSQL
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 
Asp.Net MVC 5
Asp.Net MVC 5Asp.Net MVC 5
Asp.Net MVC 5
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
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
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aop
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applications
 
HTML Form
HTML Form HTML Form
HTML Form
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
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
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 

Viewers also liked (7)

1148636319 1
1148636319 11148636319 1
1148636319 1
 
春休み企画
春休み企画春休み企画
春休み企画
 
Mak - an introduction
Mak - an introductionMak - an introduction
Mak - an introduction
 
iOS勉強会
iOS勉強会iOS勉強会
iOS勉強会
 
Hieu Xamarin iOS9, Android M 3-11-2015
Hieu Xamarin iOS9, Android M  3-11-2015Hieu Xamarin iOS9, Android M  3-11-2015
Hieu Xamarin iOS9, Android M 3-11-2015
 
ADO.NET Entity Framework 4
ADO.NET Entity Framework 4ADO.NET Entity Framework 4
ADO.NET Entity Framework 4
 
Mak an Introductionz
Mak  an IntroductionzMak  an Introductionz
Mak an Introductionz
 

Similar to ASP.NET MVC

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 TourAndrea Balducci
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
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 MVVMRiccardo Cardin
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
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 developersAndrea Dottor
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockoutDotNetCampus
 
MVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMarco Amendola
 
ASP.NET MVC 2.0
ASP.NET MVC 2.0ASP.NET MVC 2.0
ASP.NET MVC 2.0XeDotNet
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingAndrea Dottor
 
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 futuroAndrea Dottor
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
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!!Massimo Bonanni
 

Similar to ASP.NET MVC (20)

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
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
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 Intro
ASP.NET MVC IntroASP.NET MVC Intro
ASP.NET MVC Intro
 
MVC2: non solo tecnologia
MVC2: non solo tecnologiaMVC2: non solo tecnologia
MVC2: non solo tecnologia
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
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
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
ASP.NET MVC: Full Throttle
ASP.NET MVC: Full ThrottleASP.NET MVC: Full Throttle
ASP.NET MVC: Full Throttle
 
MVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.Micro
 
ASP.NET MVC 2.0
ASP.NET MVC 2.0ASP.NET MVC 2.0
ASP.NET MVC 2.0
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Corso angular js base
Corso angular js baseCorso angular js base
Corso angular js base
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffolding
 
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
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
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!!
 

More from Raffaele Fanizzi

Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele Fanizzi
 
Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Raffaele Fanizzi
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Raffaele Fanizzi
 
Push Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhonePush Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhoneRaffaele Fanizzi
 

More from Raffaele Fanizzi (7)

Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
Mobile development .net
Mobile development .netMobile development .net
Mobile development .net
 
Web Development with Visual Studio 2012
Web Development with Visual Studio 2012Web Development with Visual Studio 2012
Web Development with Visual Studio 2012
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012
 
Push Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows PhonePush Notification: come rendere vive le app su Windows Phone
Push Notification: come rendere vive le app su Windows Phone
 
HTML5
HTML5HTML5
HTML5
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 

Recently uploaded

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 

Recently uploaded (9)

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
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
  • 11. ASP.NET MVC 2 passiamo dalla teoria alla pratica 
  • 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
  • 15. ASP.NET MVC 2 newHtmlHelperDemo().Show()
  • 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
  • 17.
  • 18. ASP.NET MVC 2 (demo) => { demo.ShowValidation(); }
  • 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
  • 23. MVC vs WebForm Quando usare MVC?
  • 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
  • 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.