ASP.NET MVC Workshop Día 1

Post on 20-Dec-2014

4.142 views 1 download

description

Introducción a ASP.NET y otras tecnologías asociadas

Transcript of ASP.NET MVC Workshop Día 1

WorkshopASP.NET MVC

Día 1

Rodolfo FinochiettiMVP ASP.NET/IISLagash Systemsrodolfof@lagash.com@rodolfof

Agenda

• Arquitectura– Web– ASP.NET

• Introducción a ASP.NET MVC• Acciones y Rutas• Controladores• Vistas– Razor

• Model Binding

Arquitectura Web en .NET

Por que construir aplicacionesWeb: Es facil

Arquitectura Web

http://www.w3.org/TR/webarch

¿Cómo funciona HTTP?

ASP.NET APIs de Servicios para Aplicaciones

MembershipMembership Role ManagerRole Manager PersonalizationPersonalization

Site NavigationSite Navigation Database Caching

Database Caching

Health Monitoring

Health Monitoring

Arquitectura de ASP.NET

ASP.NET APIs de Servicios para Aplicaciones

MembershipMembership Role ManagerRole Manager PersonalizationPersonalization

Site NavigationSite Navigation Database Caching

Database Caching

Health Monitoring

Health Monitoring

ASP.NET “Page Framework”

Arquitectura de ASP.NET

Master Pages

Master Pages

Themes/Skins

Themes/Skins

Client Scripting

Client Scripting

LocalizationLocalization

ASP.NET APIs de Servicios para Aplicaciones

MembershipMembership Role ManagerRole Manager PersonalizationPersonalization

Site NavigationSite Navigation Database Caching

Database Caching

Health Monitoring

Health Monitoring

ASP.NET MVC

Arquitectura de ASP.NET

Model Binders

Model Binders

View Engines

View Engines

Mobile Render

Mobile Render

Ajax SupportAjax Support

Demo

Arquitectura ASP.NET

Introducción a

ASP.NET MVC

Modelo-Vista-Controlador

Model

ControllerView

Xerox PARC 1978http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

ASP.NET MVC

• Un framework para Web Development• Más control sobre el HTML– Más Web-Frendly

• Más testeable• Pensado para no ocular la naturaleza de la

arquitectura Web• Esta construido sobre en ASP.NET

¿Que ofrece?• SoC (Separation of Concerns)– TDD por default–Mantenibilidad

• Url y HTML mas limpio– SEO y REST friendly• /Usuarios/Buscar/Rodolfo

– CSS Friendly• <html> <div> <label> <span>

• Modelo de programación mas performante–No hay ViewState–No hay modelo de eventos

¿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/reports/1/06/2008

URLs amigables

• Legibles– www.sitio.com/products.aspx?

module=reports&productId=1&&month=6year=2008 – www.sitio.com/products/report/1/6/2008

• Predecibles– http://es.wikipedia.org/wiki/Lagash

Controlador – Uso Básico

• Escenarios, Objetivos y Diseño– Las 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); }}

Demo

Rutas y Controladores

Vistas – Uso Básico

• Escenarios, 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 Vista• Datos Loosely typed o Strongly Typed .

¿Un View… que?

• Encargado de Renderizar vistas– HTML– Javascript

• Alternativa a “<% %>”

Objetivos de Razor

• Compacto• Sencillo• “Amigo del HTML”• ¡Ya conocemos el lenguaje!

Demo

Vistas y Razor

Model Binding

Enlazar automáticamente de elementos HTML a propiedades de un objeto (incluyendo su creación)

Binding manual

Binding automático

Demo

ModelosModel Binding

Work Time

Contacto

• Mail:– rodolfof@lagash.com

• Blogs:– http://shockbyte.net

• Twitter:– @rodolfof

¡Gracias!