[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo Finochietti + Leandro...

Post on 26-May-2015

1.153 views 0 download

description

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

Transcript of [Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo Finochietti + Leandro...

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!