[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo Finochietti + Leandro Díaz Guerra + Mariano Sánchez)

1,326 views

Published on

[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo Finochietti + Leandro Díaz Guerra + Mariano Sánchez)

Published in: Technology
  • Be the first to comment

  • Be the first to like this

[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo Finochietti + Leandro Díaz Guerra + Mariano Sánchez)

  1. 1. Construcción de sitios escalables conASP.NET MVC<br />Mariano Sánchez<br />Leandro Boffi<br />Rodolfo Finochietti (MVP)<br />
  2. 2. Modelo-Vista-Controlador<br />Xerox PARC 1978<br />http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html<br />
  3. 3. ASP.NET MVC<br />Un nuevo framework para Web Development<br />Un nuevo tipo de proyecto en Visual Studio<br />Más control sobre el HTML<br />Más testeable<br />No es una nueva versión de ASP.NET Web Forms<br />Esta basado en ASP.NET<br />
  4. 4. ¿Que ofrece?<br />SoC (Separation of Concerns)<br />TDD por default<br />Mantenibilidad<br />Url y HTML mas limpio<br />SEO y REST friendly<br />/Usuarios/Buscar/Matías<br />CSS Friendly<br />&lt;html&gt; &lt;div&gt; &lt;label&gt; &lt;span&gt;<br />Modelo de programación mas performante<br />No hay ViewState<br />No hay modelo de eventos<br />
  5. 5. Demo<br />Hola Mundo<br />
  6. 6. ¿Como trabaja?<br />
  7. 7. Rutas<br />www.sitio.com/products/report/33/2008/11<br />
  8. 8. URIs amigables<br />Legibles<br />www.sitio.com/products.aspx?module=reports&productId=33&year=2008&m=11<br />www.sitio.com/products/report/33/2008/11<br />Predecibles<br />http://es.wikipedia.org/wiki/Microsoft<br />
  9. 9. Ruteo – URIs amigables<br />Se agreganrutas a la RouteTable global<br />El Mapeocrea un objetoRouteData (un diccionario de key/values)<br />protected void Application_Start(object sender, EventArgs e) {<br />RouteTable.Routes.Add(<br /> &quot;Blog/bydate/[year]/[month]/[day]&quot;,<br /> new { controller=&quot;blog&quot;, action=&quot;showposts&quot; },<br /> new { year=@&quot;d{1,4}&quot;, month= @&quot;d{1,2}&quot;, day = @&quot;d{1,2}&quot;});<br />}<br />
  10. 10. Controlador – UsoBásico<br />Escenarios, Objetivos y Diseño<br />Las URLs indican“acciones”del Controlador, no páginas<br />Las accionesdebendeclarase en el Controlador.<br />El Controladorejecutalógica y elige la vista.<br />public ActionResultShowPost(int id) {<br /> Post p = PostRepository.GetPostById(id);<br /> if (p != null) {<br /> View(p);<br /> } else {<br /> View(&quot;nosuchpost&quot;, id);<br /> }<br />}<br />
  11. 11. Vistas – UsoBásico<br />Escenarios, Objetivos y Diseño:<br />Generan HTML u otrotipo de contenido. <br />Helpers pre-definidos.<br />Pueden ser .ASPX, .ASCX, .MASTER, etc.<br />Puedenreemplazarse con otrastecnologías:<br />Template engines (NVelocity, Spark, …).<br />Formatos de salida (images, RSS, JSON, …).<br />Puedendefinirsevistas Mockpara testing.<br />El controladorofrecedatos a la Vista<br />Datos Loosely Typed o Strongly Typed .<br />
  12. 12. Demo<br />ASP.NET MVC<br />
  13. 13. ¿Qué hay del lado del cliente?<br />
  14. 14. jQuery<br />Open Source<br />MIT y GPL<br />Cross Browser<br />Internet Explorer 6+, Firefox 2+, Opera 9+, and Safari 2+<br />Liviano <br />15k<br />Adoptado por Microsoft<br />Integrado con Visual Studio<br />Soporte 7/24<br />
  15. 15. jQuery<br />
  16. 16. jQuery Selectors<br />
  17. 17. jQuery Animations<br />
  18. 18. jQuery Plugins<br />http://plugins.jquery.com/<br /><ul><li>Ajax (182)
  19. 19. Animation and Effects (253)
  20. 20. Browser Tweaks (67)
  21. 21. Data (122)
  22. 22. DOM (123)
  23. 23. Drag-and-Drop (30)
  24. 24. Events (119)
  25. 25. Forms (317)
  26. 26. Integration (88)
  27. 27. JavaScript (130)
  28. 28. jQuery Extensions (198)
  29. 29. Layout (162)
  30. 30. Media (108)
  31. 31. Menus (80)
  32. 32. Metaplugin (24)
  33. 33. Navigation (131)
  34. 34. Tables (64)
  35. 35. User Interface (571)
  36. 36. Utilities (291)
  37. 37. Widgets (211)
  38. 38. Windows and Overlays (89)</li></li></ul><li>¿Qué hay de AJAX?<br />
  39. 39. AJAX en ASP.NET MVC<br />AJAX MVC<br />AJAX Helpers, Vistas Parciales<br />ASP.NET AJAX Framework (ClientSide)<br />Vistas del tipo JSON<br />XMLHttpRequest<br />jQuery<br />
  40. 40. Demo<br />ASP.NET MVC + jQuery + AJAX<br />
  41. 41. Extensibilidad<br />Tan simple o complejo como se quiera<br />Facil de extender<br />Se puedeusar con IOC, o no<br />Se llevabien con otros<br />NHibernate para el Modelo, <br />Spark Engine para las Vistas<br />O cualquier otra cosa!<br />
  42. 42. Demo<br />Extensibilidad<br />
  43. 43. Conclusiones<br />Funcionamuybien!<br />Estonoes Web Forms 4.0<br />Se trata de teneralternativas. Auto vs. Moto.<br />Máximo control sobre URLs y HTML<br />URLs amigables: SEO y REST<br />Gran integración con ASP.NET<br />
  44. 44. ¿Preguntas?<br />
  45. 45. Recursos<br />ASP.NET MVC: http://www.asp.net/mvc/<br />ASP.NET MVC Nerd DinnerSample: http://tinyurl.com/aspnetmvc<br />Scott Guthrie: http://weblogs.asp.net/scottgu/<br />
  46. 46. rodolfof@lagash.com http://twitter.com/rodolfofhttp://weblogs.shockbyte.com.ar/rodolfofmarianos@lagash.com¡NO TIENE TWITTER!http://weblogs.asp.net/marianosleandrob@lagash.com http://twitter.com/leandroboffi http://agileculture.net/lboffi/ ¡GRACIAS!<br />

×