View
1.152
Download
0
Category
Preview:
DESCRIPTION
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo Finochietti + Leandro Díaz Guerra + Mariano Sánchez)
Citation preview
Construcción de sitios escalables con
ASP.NET MVC
Mariano SánchezLeandro BoffiRodolfo Finochietti (MVP)
Modelo-Vista-Controlador
Model
ControllerView
Xerox PARC 1978http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
ASP.NET MVCUn nuevo framework para Web
DevelopmentUn nuevo tipo de proyecto en Visual
StudioMás control sobre el HTMLMás testeableNo es una nueva versión de ASP.NET
Web FormsEsta basado en ASP.NET
¿Que ofrece?SoC (Separation of Concerns)
TDD por defaultMantenibilidad
Url y HTML mas limpioSEO y REST friendly
/Usuarios/Buscar/MatíasCSS Friendly
<html> <div> <label> <span>
Modelo de programación mas performanteNo hay ViewStateNo hay modelo de eventos
Demo Hola Mundo
¿Como trabaja?Navego a http://.../Productos/Listar Se determina
la ruta
El controller Productos es
creado
Un método Listar del
controller es invocado
Se ejecuta la logica del controller
Se dibuja la vista pasándole
la ViewData
Se dibujan Urls que apuntan a otras acciones
de otros controllers
Rutas
www.sitio.com/products/report/33/2008/11
URIs amigablesLegibles
www.sitio.com/products.aspx?module=reports&productId=33&year=2008&m=11
www.sitio.com/products/report/33/2008/11
Predecibleshttp://es.wikipedia.org/wiki/Microsoft
Ruteo – URIs amigablesSe agregan rutas a la RouteTable globalEl Mapeo crea un objeto RouteData (un diccionario de
key/values)protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.Add(
"Blog/bydate/[year]/[month]/[day]",new { controller="blog", action="showposts" },new { year=@"\d{1,4}", month= @"\d{1,2}",
day = @"\d{1,2}"});}
Controlador – Uso Básico
Escenarios, Objetivos y DiseñoLas URLs indican “acciones” del Controlador, no páginas Las acciones deben declarase en el Controlador.El Controlador ejecuta lógica y elige la vista.
public ActionResult ShowPost(int id) { Post p = PostRepository.GetPostById(id); if (p != null) { View(p); } else { View("nosuchpost", id); }}
Vistas – Uso BásicoEscenarios, Objetivos y Diseño:
Generan HTML u otro tipo de contenido. Helpers pre-definidos.
Pueden ser .ASPX, .ASCX, .MASTER, etc.Pueden reemplazarse con otras
tecnologías:Template engines (NVelocity, Spark, …).Formatos de salida (images, RSS, JSON, …).Pueden definirse vistas Mock para testing.
El controlador ofrece datos a la VistaDatos Loosely Typed o Strongly Typed .
Demo ASP.NET MVC
¿Qué hay del lado del cliente?
jQueryOpen Source
MIT y GPLCross Browser
Internet Explorer 6+, Firefox 2+, Opera 9+, and Safari 2+
Liviano 15k
Adoptado por MicrosoftIntegrado con Visual StudioSoporte 7/24
jQuery
Selectors
Animations
Plugins
jQuery Selectors
$(“#userName”)
$(“input:text”)
$(“.required”)
$(“#grid tr:even”)
jQuery Animations
$(…).show() $(…).hide()
$(…).slideDown() $(…).slideUp()
$(…).fadeIn() $(…).fadeOut()
jQuery Pluginshttp://plugins.jquery.com/
•Ajax (182)
•Animation and Effects (253)
•Browser Tweaks (67)
•Data (122)
•DOM (123)
•Drag-and-Drop (30)
•Events (119)
•Forms (317)
•Integration (88)
•JavaScript (130)
•jQuery Extensions (198)
•Layout (162)
•Media (108)
•Menus (80)
•Metaplugin (24)
•Navigation (131)
•Tables (64)
•User Interface (571)
•Utilities (291)
•Widgets (211)
•Windows and Overlays (89)
¿Qué hay de AJAX?
AJAX en ASP.NET MVCAJAX MVC
AJAX Helpers, Vistas ParcialesASP.NET AJAX Framework (Client Side)
Vistas del tipo JSONXMLHttpRequestjQuery
Demo ASP.NET MVC + jQuery + AJAX
ExtensibilidadTan simple o complejo como se quiera
Facil de extenderSe puede usar con IOC, o no
Se lleva bien con otrosNHibernate para el Modelo, Spark Engine para las VistasO cualquier otra cosa!
Demo Extensibilidad
ConclusionesFunciona muy bien!Esto no es Web Forms 4.0
Se trata de tener alternativas. Auto vs. Moto.
Máximo control sobre URLs y HTMLURLs amigables: SEO y REST
Gran integración con ASP.NET
¿Preguntas?
RecursosASP.NET MVC: http://www.asp.net/mvc/ASP.NET MVC Nerd Dinner Sample:
http://tinyurl.com/aspnetmvcScott Guthrie:
http://weblogs.asp.net/scottgu/
rodolfof@lagash.com http://twitter.com/rodolfofhttp://weblogs.shockbyte.com.ar/rodolfof
marianos@lagash.com¡NO TIENE TWITTER!http://weblogs.asp.net/marianos
leandrob@lagash.com http://twitter.com/leandroboffi http://agileculture.net/lboffi/
¡GRACIAS!
Recommended