Microsoft ASP.NET MVC 2<br />Andrea Dottor – Microsoft MVP ASP/ASP.NET<br />
09/04/2010<br />www.xedotnet.org<br />2<br />MVC o Web Form?<br />Cos’è il pattern MVC?<br />In dettaglio<br />Model<br />...
09/04/2010<br />www.xedotnet.org<br />3<br />MVC non sostituisce le WebForm<br />MVC si pone come alternativa ad WebForm<b...
ASP.NET MVC<br />ASP.NET MVC vsWebForm<br />ASP.NETWebForm<br />Applicazioni RAD<br />Non richiede particolari conoscenze ...
MasterPage
Output Cache
Autenticazione e Autorizzazione
Globalizzazione
Routing</li></li></ul><li>09/04/2010<br />www.xedotnet.org<br />5<br />Gli obiettivi di ASP.NET MVC<br />Realizzare applic...
09/04/2010<br />www.xedotnet.org<br />6<br />MVC – il pattern<br />Non è un pattern recente ma risale agli anni ‘70<br />O...
09/04/2010<br />www.xedotnet.org<br />7<br />MODEL<br />Contiene l’object model dell’applicazione<br />Contiene lo strato ...
09/04/2010<br />www.xedotnet.org<br />8<br />ASP.NET MVC – MODEL<br />Può anche essere composto utilizzando LINQ to SQL op...
09/04/2010<br />www.xedotnet.org<br />9<br />VIEW<br />Si occupa di renderizzare le informazioni<br />Non devono contenere...
09/04/2010<br />www.xedotnet.org<br />10<br />ASP.NET MVC – VIEW<br />Paragonabile al HTML markup di una pagina ASP.NET<br...
09/04/2010<br />www.xedotnet.org<br />11<br />ASP.NET MVC - PARTIAL VIEW<br />ViewUserControl<br />Si possono vedere come ...
09/04/2010<br />www.xedotnet.org<br />12<br />CONTROLLER<br />Si occupa dell’iterazione tra Model e View<br />Riceve l’inp...
09/04/2010<br />www.xedotnet.org<br />13<br />ASP.NET MVC – CONTROLLER<br />Contenuto nella cartella ~/Controllers/<br />L...
MVC – il pattern<br />09/04/2010<br />www.xedotnet.org<br />14<br />Model<br />http://xedotnet.org/Products/http://xedotne...
09/04/2010<br />www.xedotnet.org<br />15<br />Passaggio di dati controller -> view<br />Attraversoil dictionary Controller...
09/04/2010<br />www.xedotnet.org<br />16<br />Passaggio di dati view -> controller<br />Submit della form (HttpPost)<br />...
09/04/2010<br />www.xedotnet.org<br />17<br />HTML Helper<br />Permette di agevolare la creazione di controlli HTML per la...
Validazione<br />V 1.0 <br />Server-side Validation<br />V 2.0<br />Client-side Validation<br />Data Annotation<br />Model...
09/04/2010<br />www.xedotnet.org<br />19<br />Areas<br />Permette di suddividere l’applicazione in sotto-applicazioni MVC<...
Upcoming SlideShare
Loading in …5
×

ASP.NET MVC 2.0

1,933 views

Published on

ASP.NET MVC è un framework sviluppato da Microsoft che permette di sviluppare applicazioni web utilizzando il pattern Model-View-Controller. Questo pattern, e (in questa sessione) la sua implementazione realizzata da Microsoft, si propone di apportare alcuni benefici: Maggiore controllo del markup della pagina, URL più leggibili Facilità di integrazione con librerie AJAX, chiara separazione dei ruoli/responsabilità tra layer, facilitando i test e la manutenzione dell'applicazione, supporto per test-driven development. Nella sessione andremo in dettaglio nella versione 2 di ASP.NET MVC, e con esempi pratici daremo risposta alle domande più frequenti, e a molte altre. Quando si utilizza ASP.NET MVC? Come si utilizza ASP.NET MVC? Semplifica davvero la manutenzione dell'applicazione? E' realmente testabile? Cosa guadagno ad usare ASP.NET MVC?

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,933
On SlideShare
0
From Embeds
0
Number of Embeds
198
Actions
Shares
0
Downloads
42
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

ASP.NET MVC 2.0

  1. 1. Microsoft ASP.NET MVC 2<br />Andrea Dottor – Microsoft MVP ASP/ASP.NET<br />
  2. 2. 09/04/2010<br />www.xedotnet.org<br />2<br />MVC o Web Form?<br />Cos’è il pattern MVC?<br />In dettaglio<br />Model<br />View <br />Controller<br />Come si usa ASP.NET MVC?<br />Cosa devo conoscere per usare MVC?<br />Perchè/quando usare ASP.NET MVC?<br />
  3. 3. 09/04/2010<br />www.xedotnet.org<br />3<br />MVC non sostituisce le WebForm<br />MVC si pone come alternativa ad WebForm<br />Si poteva, e si può, controllare il codice HTML prodotto anche con ASP.NET WebForm<br />CSS Friendly Adapter<br />Adaptive Rendering<br />ASP.NET 4.0 <br />...<br />Si dovrà capire dov’è il vantaggio ad utilizzare MVC e dove WebForm<br />MVC non sostituisce le WebForm<br />
  4. 4. ASP.NET MVC<br />ASP.NET MVC vsWebForm<br />ASP.NETWebForm<br />Applicazioni RAD<br />Non richiede particolari conoscenze del web<br />ViewState e PostBack<br />Modello Event-Driven<br />Facilitàcontrollo HTML e Javascript<br />Pensato per scenari SEO e REST<br />Facilmentetestabile<br />CoreASP.NET<br /><ul><li>Linguaggi C#, VB.NET
  5. 5. MasterPage
  6. 6. Output Cache
  7. 7. Autenticazione e Autorizzazione
  8. 8. Globalizzazione
  9. 9. Routing</li></li></ul><li>09/04/2010<br />www.xedotnet.org<br />5<br />Gli obiettivi di ASP.NET MVC<br />Realizzare applicazioni che seguano il pattern Model-View-Controller<br />Separazione dei compiti all’interno dell’applicazione<br />Completo controllo del codice HTML prodotto<br />Consente di avere URL SEO Friendly<br />Agevolare il Test Driven Development<br />Facilità di integrazione con ASP.NET AJAX e jQuery<br />Gli obiettivi di MVC Framework<br />
  10. 10. 09/04/2010<br />www.xedotnet.org<br />6<br />MVC – il pattern<br />Non è un pattern recente ma risale agli anni ‘70<br />Originalmente utilizzato in Smalltalk per la realizzazione di interfacce grafiche<br />Permette di separare i compiti all’interno dell’applicazione tra Model, View e Controller<br />MVC – il pattern<br />
  11. 11. 09/04/2010<br />www.xedotnet.org<br />7<br />MODEL<br />Contiene l’object model dell’applicazione<br />Contiene lo strato di accesso ai dati<br />Contiene le regole di validazione<br />MODEL (teoria)<br />
  12. 12. 09/04/2010<br />www.xedotnet.org<br />8<br />ASP.NET MVC – MODEL<br />Può anche essere composto utilizzando LINQ to SQL oppure Entity Framework<br />Per convenzione il nome del file dovrebbe corrispondere a quello del rispettivo controller: <Nome del model>Model<br />Contenuto nella cartella ~/Models/<br />Tramite attributi nelle classi e proprietà vengono specificate le regole di validazione e di visualizzazione<br />Stessi attributi utilizzati anche in ASP.NET Dynamic Data<br />MODEL (nel microsoft mvc)<br />
  13. 13. 09/04/2010<br />www.xedotnet.org<br />9<br />VIEW<br />Si occupa di renderizzare le informazioni<br />Non devono contenere logica<br />Non devono eseguire l’accesso ai dati<br />I dati da visualizzare vengono forniti dal controller<br />VIEW (teoria)<br />
  14. 14. 09/04/2010<br />www.xedotnet.org<br />10<br />ASP.NET MVC – VIEW<br />Paragonabile al HTML markup di una pagina ASP.NET<br />Può essere composto da:<br />ViewPage<br />ViewMasterPage<br />Devono essere create in<br />~/View/<ControllerName>/<br />~/View/Shared/<br />VIEW (nel microsoft mvc)<br />
  15. 15. 09/04/2010<br />www.xedotnet.org<br />11<br />ASP.NET MVC - PARTIAL VIEW<br />ViewUserControl<br />Si possono vedere come gli UserControl di ASP.NET<br />Possono avere acesso agli stessi dati della parent View<br />Html.RenderPartial("CommentInsert");<br />Oppure accesso a parte dei dati del model<br />Html.RenderPartial("DisplayNewsDescription", Model.Comments);<br />I dati modificati nella partial View, non modificano i dati della parent View<br />Hanno solamente HTML markup (come per le View)<br />PARTIAL VIEW (nel microsoft mvc)<br />
  16. 16. 09/04/2010<br />www.xedotnet.org<br />12<br />CONTROLLER<br />Si occupa dell’iterazione tra Model e View<br />Riceve l’input dell’utente e lo elabora per fornire i dati corretti alla View<br />CONTROLLER (teoria)<br />
  17. 17. 09/04/2010<br />www.xedotnet.org<br />13<br />ASP.NET MVC – CONTROLLER<br />Contenuto nella cartella ~/Controllers/<br />La classe deve ereditare dalla classe Controller<br />Il nome deve essere <Nome del controller>Controller<br />Esempio<br />public class AccountController : Controller<br />Deve contenere almeno un metodo per ogni action<br />Esempio:<br />public ActionResult LogOn()<br />public ActionResult LogOn(LogOnModel model, string returnUrl)<br />CONTROLLER (nel microsoft mvc)<br />
  18. 18. MVC – il pattern<br />09/04/2010<br />www.xedotnet.org<br />14<br />Model<br />http://xedotnet.org/Products/http://xedotnet.org/Products/Edit/5<br />Controller<br />View<br />ProductsController<br />Product (Model)<br />SQL<br />Products (View)<br />/View/Products/Index.aspx<br />/View/Products/Edit.aspx<br />
  19. 19. 09/04/2010<br />www.xedotnet.org<br />15<br />Passaggio di dati controller -> view<br />Attraversoil dictionary Controller.ViewData<br />ViewData["Message"] = "Welcome to ASP.NET MVC!";<br />La paginaereditadaSystem.Web.Mvc.ViewPage<br />UtilizzandoStrongly Typed Classes<br />News news = newsRepository.GetNewsById(id);return View(news);<br />La paginapuòereditaredaSystem.Web.Mvc.ViewPage<T> per facilitare la scrittura del codice nella View<br />Passaggio di dati controller -> view<br />
  20. 20. 09/04/2010<br />www.xedotnet.org<br />16<br />Passaggio di dati view -> controller<br />Submit della form (HttpPost)<br />Richiesta tramite AJAX<br />Passaggio di dati view -> controller<br /><% using (Html.BeginForm()) {%><br /><fieldset><br /> <%= Html.TextBoxFor(model => model.Author)%><br /> <p><br /> <input type="submit" value="Create" /><br /> </p><br /></fieldset><br /><% } %><br />var action = "/Admin/News/Delete/" + recordId;<br />var request = new Sys.Net.WebRequest(); <br />request.set_httpVerb("DELETE"); <br />request.set_url(action);<br />request.add_completed(deleteCompleted); <br />request.invoke();<br />
  21. 21. 09/04/2010<br />www.xedotnet.org<br />17<br />HTML Helper<br />Permette di agevolare la creazione di controlli HTML per la visualizzazione/modifica dei dati del model<br />V 1.0<br />Solo tramite stringhe<br />Esegnalazione errori solo a run-time<br />V 2.0<br />Uso di lambda expression<br />Segnalazione errori a compile-time<br />HTML Helper<br />
  22. 22. Validazione<br />V 1.0 <br />Server-side Validation<br />V 2.0<br />Client-side Validation<br />Data Annotation<br />Model Validation Provider  custom validation provider<br />Validazione<br />09/04/2010<br />www.xedotnet.org<br />18<br />
  23. 23. 09/04/2010<br />www.xedotnet.org<br />19<br />Areas<br />Permette di suddividere l’applicazione in sotto-applicazioni MVC<br />Maggiore separazione dei compiti/ruoli<br />Maggiore controllo del codice nell’applicazione<br />Routing<br />Controllers, Models e View<br />Permessi<br />Areas<br />
  24. 24. HTML.RenderAction<br />HTML.RenderAction<br />Possibilità di renderizzare una porzione della pagina utilizzando una PartilaView popolata da una specifica action (di uno specifico controller)<br />V1.0: Html.RenderPartial riutilizzo solo una porzione della view<br />V 2.0: Html.RenderAction e Html.Action<br />Chiamo un Action Method dalla View <br />Posso riutilizzare anche la Business Logic<br />http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx<br />09/04/2010<br />www.xedotnet.org<br />20<br />
  25. 25. 09/04/2010<br />www.xedotnet.org<br />21<br />jQuery<br />E’ incluso nel template di progetto MVC<br />Libreria javascript di terze parti<br />(Microsoft ha iniziato a supportarne lo sviluppo)<br />Fornisce un framework client che permette di manipolare con facilità di DOM della pagina, stili e animazioni.<br />jQuery<br />
  26. 26. Controller Asincroni<br />Possibilità di utilizzare Controller Asincroni<br />Gestione simile a quella delle Web Form<br />Situazioni di thread Starvation<br />Thread del pool «schedula» l’esecuzione<br />In genere:<br />I/O usato molto<br />No se viene usata tanta CPU<br />Si vuole cancellare un’operazione Long-Running<br />http://msdn.microsoft.com/en-us/library/ee728598(VS.100).aspxhttp://blog.stevensanderson.com/2010/01/25/measuring-the-performance-of-asynchronous-controllers/<br />09/04/2010<br />www.xedotnet.org<br />22<br />
  27. 27. Link<br />09/04/2010<br />www.xedotnet.org<br />23<br />Andrea Dottor<br />blog.dottor.net<br />andrea@dottor.net <br />www.dottor.net<br />twitter.com/dottor<br />

×