Whats new in ASP.NET 3.5 SP1 Simone Chiaretta Solution Developer, Avanade 24 Ottobre 2008.
ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.
-
Upload
severo-marchese -
Category
Documents
-
view
214 -
download
0
Transcript of ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.
![Page 1: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/1.jpg)
ASP.NET MVC FrameworkSO WHAT?
Simone ChiarettaSolution Developer, Avanadehttp://codeclimber.net.nz
3 Aprile 2009
![Page 2: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/2.jpg)
Thanks to the Sponsors
![Page 3: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/3.jpg)
Who the hell am I?
► Simone Chiaretta► Lavoro per Avanade Italy► Microsoft MVP ASP.NET► Blogger – http://codeclimber.net.nz ► Fondatore di UGIALT.NET► OpenSource developer► Climber► All Around Nice Guy
![Page 4: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/4.jpg)
Agenda
► ASP.NET MVC vc ASP.NET WebForms► Testing► Using DI/IoC► Validazione► Componentizzazione► Ajax - jQuery► DataGrid MVC version► PRG Pattern► ASP.NET Futures► T4
4
![Page 5: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/5.jpg)
ASP.NET MVC vs ASP.NET WebForms
![Page 6: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/6.jpg)
ASP.NET MVC vs ASP.NET WebForms
Facile!Usa solo
ASP.NET MVC!
![Page 7: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/7.jpg)
Testing
![Page 8: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/8.jpg)
DaiSeriamente!
![Page 9: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/9.jpg)
ASP.NET MVC vs ASP.NET WebFormsThis time for real
![Page 10: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/10.jpg)
WebForms
► WebForms– Sviluppo RAD– Paradigma più simile allo sviluppo tradizionale client-side
– Ottimo per “prototipare”– Controlli– Gestione automatica dello stato– Ecosistema di controlli di 3° parti
► Ma…– Può diventare inmantenibile– Codice HTML poco controllato– Più difficile separare le responsabilità
10
![Page 11: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/11.jpg)
ASP.NET MVC
► ASP.NET MVC– “Miglior” architettura dell’applicazione– Viste “leggere” (no codebehind)– Maggior controllo su HTML– Abilita uso di metodologie Agile (TDD)– ViewEngine alternativi
► Ma…– Maggior sforzo realizzativo
11
![Page 12: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/12.jpg)
Elementi condivisi
► Routing► Caching► Ajax e jQuery► Membership/Profile provider► Form Authentication
12
![Page 13: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/13.jpg)
Elementi per scegliere
► Il proprio “gusto” personale► Intranet vs Internet► Serve il controllo sul markup?► Usiamo TDD o anche solo i Test?► Abbiamo familiarità coi pattern?► Abbiamo investito molto in controlli?
13
![Page 14: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/14.jpg)
Decision Chart
http://www.emadibrahim.com/2008/09/07/deciding-between-aspnet-mvc-and-webforms/
T4 e librerie accessoriepossono aiutare
Dynamic Data for MVC...sta arrivando
![Page 15: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/15.jpg)
Testing
![Page 16: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/16.jpg)
Altri esempi di test
► Testare strongly-typed view data– Assert.AreEqual(expected, ((BlogData)
result.ViewData.Model).Titolo,…);
► Testare Redirect– var result = controller.Show(…) as RedirectResult;
16
![Page 17: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/17.jpg)
[DEMO]Testing
![Page 18: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/18.jpg)
MockHttpContext
MockSessionMockRequestMockCache
Mocking HttpContext
HttpContext
Session
Cache
Request
IIS
SUTTEST
![Page 19: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/19.jpg)
[DEMO]Mocking HttpContext
![Page 20: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/20.jpg)
Using DI/IoC
![Page 21: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/21.jpg)
Cos’è Dependency Injection
21
![Page 22: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/22.jpg)
Cos’è Dependency Injection
BAD
![Page 23: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/23.jpg)
Cos’è Dependency Injection
BETTER
![Page 24: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/24.jpg)
Cos’è Dependency Injection
BUT
![Page 25: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/25.jpg)
Inversion of Control
With IoC
![Page 26: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/26.jpg)
IoC inside ASP.NET MVC
► Estendi ControllerFactory► Molti ControllerFactory già disponibili
– Ninject– StructureMap– Spring– Unity– Windsor
![Page 27: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/27.jpg)
IoC inside ASP.NET MVC with Ninject
► Global.asax eredita da NinjectHttpApplication
► Helper per configurare tutti i controller:– RegisterAllControllersIn(“assemblyName”);
![Page 28: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/28.jpg)
[DEMO]NinjectControllerFactory
![Page 29: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/29.jpg)
Validazione
![Page 30: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/30.jpg)
Validazione in ASP.NET MVC
► Validazione Server-Side: out-of-the-box– ModelBinder– Data Annotations
► Validazione Client-Side: librerie esterne
![Page 31: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/31.jpg)
[DEMO]server-side validation
![Page 32: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/32.jpg)
Validazione in ASP.NET MVC Client side► xVal► Validation Toolkit► Fluent Validation
![Page 33: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/33.jpg)
xVal
http://xval.codeplex.com/
![Page 34: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/34.jpg)
[DEMO]Client-side validation
![Page 35: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/35.jpg)
Componentizzazione
![Page 36: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/36.jpg)
Componentizzazione
► RenderPartial– Il controller deve sempre “creare” i dati di tutti i componenti
► RenderAction (futures)– Smells (la view chiama un controller)– Difficile da testare
► Custom HtmlHelpers– Ok per pezzi di HTML, ma non deve avere logica
![Page 37: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/37.jpg)
Action Filtes
► Definiti come Attributi► Permettono di eseguire “codice”
– Durante la fase di Autenticazione– In caso di eccezione– Prima di una Action– Dopo una Action– Prima del rendering della view– Dopo il rendering della view
► Filtri “core”– Authorize– OutputCache
![Page 38: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/38.jpg)
Action Filter + Render Partial
► Controller:– Esegue il codice per il suo “main concern” e “genera” il dato principale
► View:– Mostra l’output principale– Chiama le varie PartialViews
► Action Filters:– Caricano i dati per le partial views
► Partial views– Mostrano i dati caricati dagli Action Filters
![Page 39: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/39.jpg)
[DEMO]Action Filter + Render Partial
![Page 40: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/40.jpg)
Ajax - jQuery
![Page 41: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/41.jpg)
ASP.NET MVC Ajax
► Ajax Helper► JSONResult
41
![Page 42: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/42.jpg)
Walkthrough
► Referenzia i file js► Usa AjaxHelper
– Ajax.BeginForm– Ajax.ActionLink
► Imposta le AjaxOptions– Confirm– LoadingElement– UpdateTargetId– OnBegin/OnComplete/OnSuccess/OnFailure
42
![Page 43: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/43.jpg)
[DEMO]Ajax con ASP.NET MVC
![Page 44: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/44.jpg)
ASP.NET MVC + jQuery
► jQuery è ufficialmente parte del framework– È supportato dal supporto tecnico– Intellisense
44
![Page 45: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/45.jpg)
[DEMO]ASP.NET MVC + jQuery
![Page 46: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/46.jpg)
DataGrid MVC version
![Page 47: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/47.jpg)
DataGrid MVC version
► jQuery powered– jqGrid - http://www.trirand.com/blog/
47
http://www.trirand.com/blog/
![Page 48: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/48.jpg)
Post-Redirect-Get Pattern
![Page 49: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/49.jpg)
PRG Pattern
Cosa succede quando si fa refresh (back) dopo un submit?
49
![Page 50: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/50.jpg)
PRG Pattern
► View invia i dati in POST► Controller valida
– Invia View con errori (POST)– Redirect in GET
► Pagina in GET mostra i risultati
![Page 51: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/51.jpg)
PRG Pattern Mantra
► Never show pages in response to POST► Always load pages using GET► Navigate from POST to GET using REDIRECT
![Page 52: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/52.jpg)
[DEMO]Post-Redirect-Get
![Page 53: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/53.jpg)
ASP.NET MVC Futures
![Page 54: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/54.jpg)
Futures
► Donut caching– Html.Substitute
► Render Action– Html.RenderAction
► Declarative Controls– <mvc:TextBox Name="someTextBox" runat="server" />
– <mvc:Repeater Name="someData" runat="server">► Action Link with Lambdas
– <%=Html.ActionLink<HomeController>(c => c.About(),
“About")%>
► Strongly-typed helpers– Html.TextBoxFor(m => m.Title);
► Asynchronous controllers
![Page 55: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/55.jpg)
Text Template Transformation Toolkit (aka T4)
![Page 56: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/56.jpg)
T4
► Text Template Transformation Toolkit► Già “gratis” con VisualStudio► Generano View e Controllers► Globali:
– C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\CodeTemplates
► Per Progetto– \CodeTemplates
![Page 57: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/57.jpg)
[DEMO]T4 + MVC Futures
![Page 58: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/58.jpg)
Risorse su T4
► http://blogs.msdn.com/webdevtools/archive/2009/01/27/overview-of-mvc-tools-features.aspx
► http://blogs.msdn.com/webdevtools/archive/2009/01/29/t4-templates-a-quick-start-guide-for-asp-net-mvc-developers.aspx
► http://www.t4editor.net/► http://www.olegsych.com/articles/
![Page 59: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/59.jpg)
Beginning ASP.NET MVC
► Simone Chiaretta e Keyvan Nayyeri
► Rilascio: Luglio 2009► Già in prevendita su Amazon
► TOC:– MVC– Testing– And more...
http://www.amazon.co.uk/Beginning-ASP-NET-MVC-Simone-Chiaretta/dp/047043399X/
![Page 60: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/60.jpg)
Contatti – Simone Chiaretta
► MSN: [email protected]► Blog:
– English: http://codeclimber.net.nz/– Italiano: http://blogs.ugidotnet.org/piyo/
► Twitter: http://twitter.com/simonech
60
![Page 61: ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.](https://reader035.fdocuments.us/reader035/viewer/2022070313/5542eb68497959361e8d3574/html5/thumbnails/61.jpg)
Q&A
61