SlideShare una empresa de Scribd logo
ASP.NET MVC A FULL Matias Juan / mjuan@tecnosoftware.com.ar Jonathan Solarz / jsolarz@tecnosoftware.com.ar Tecnosoftware S.A.
Objetivos Que es ASP.NET MVC Unit Testing con ASP.NET MVC Extendiendo ASP.NET MVC
ASPNET MVC Foco en separación de responsabilidades (MVC) REST (en contraste a Postback) Extensibilidad  Mejor soporte para TDD
Componentes principales en MVC Routing, Routetables Model, BussinessLogic & DomainEntities Controllers, PresentationLogic Views, PresentationModel, Modelstate
El framework en funcionamiento Browser MvcHandler Controller Model View Post New InvokeAction InvokeMethod Lookup View Render (ViewData) HTML
Demo Ejemplo simple de que hace el ASPNET MVC
Unit testing Probar partes del sistema de manera individual asegurando que funcionan correctamente Provee un contrato escrito y estricto que una porcion de código debe cumplir Como resultado podemos encontrar problemas de manera temprana y de manera instantánea
Probando la lógica de presentación Aseguremos que todo lo que llega a la vista esta testeado Probamos lógica de navegación Probamos las validaciones La vista la podemos probar navegando el sitio manualmente o con alguna herramienta automatizada
Demo Agregamos algo de unit testing
ModelBinders Extensión del framework que permite crear instancias de clases en base a valores enviados por request.  Al action llega el objeto instanciado y no los valores del request Nos permite participar del ciclo de vida de creación de la instancia permitiéndonos por ejemplo validar los atributos y agregar mensajes de error invalidando el modelo
Demo Vemos como simplificamos la responsabilidad del controller agregando el uso de binders
ActionFiltrers Nos permiten interceptar distintos puntos de la ejecución de un action Se decoran controllers y/o actions Reutilizamos lógica de presentación Ejemplos Validaciones Carga de datos en el viewData Caché
Demo Aplicamos lógica de presentación en distintos puntos de la aplicación. La responsabilidad la tiene el filtro
ControllerFactory Necesitamos cambiar la manera de instanciar controllers Por ejemplo: Para integrar la solución con un IoCcontainer y poder inyectar dependencias Request MvcHandler IController MvcRouteHandler IControllerFactory
Demo Integramos la solución con un IoCcontanier y todo es automágicamente inyectado
Contribuciones MvcContrib ViewDataExtensions : nospermitetipar el viewDataparavariosobjetos Factories de controllers para containers IoC: StructureMap, Windsor, Spring.Net, etc UI Helpers ActionResults Filters View Engines Controllers Binders
Referencias ASPNET MVC Referencia: http://www.asp.net/learn/mvc/ Books: http://www.asp.net/community/books/ Unit Testing y Mocking Nunit:  http://www.nunit.org/ NMOCK: http://www.nmock.org/index.html RHINO MOCK: http://ayende.com/projects/rhino-mocks.aspx Extras MvcContrib: http://www.codeplex.com/MVCContrib ValidatorToolkit: http://mvcvalidatortoolkit.codeplex.com/
¿Preguntas?
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)

Más contenido relacionado

La actualidad más candente

Jenkins ci + selenium
Jenkins ci + seleniumJenkins ci + selenium
Jenkins ci + selenium
Info ArtdeCode
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Rodolfo Finochietti
 
SQL en Visual Studio
SQL en Visual StudioSQL en Visual Studio
SQL en Visual Studio
Manuel Antonio
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
David Gómez García
 
Preparedstatement
PreparedstatementPreparedstatement
Preparedstatement
Andy Alarcón Regalado
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
Jorge Pacheco Mengual
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
Carlos Landeras Martínez
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
Plain Concepts
 
ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)
José María Aguilar
 
Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#
Víctor Moreno
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1
Gonzalo C.
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
Luis Ruiz Pavón
 
s20150425 introduccion a_azureautomation_es
s20150425 introduccion a_azureautomation_ess20150425 introduccion a_azureautomation_es
s20150425 introduccion a_azureautomation_es
Ricardo González
 
Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#
Víctor Moreno
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
Rodrigo Pimentel
 
Máquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .NetMáquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .Net
Víctor Moreno
 
20150416 releasemanagement
20150416 releasemanagement20150416 releasemanagement
20150416 releasemanagement
Ricardo González
 
Bases de datos SQL Azure en Microsoft Azure con C#
Bases de datos SQL Azure en Microsoft Azure con C#Bases de datos SQL Azure en Microsoft Azure con C#
Bases de datos SQL Azure en Microsoft Azure con C#
Víctor Moreno
 
Instalación y configuración de team foundation server 2010
Instalación y configuración de team foundation server 2010Instalación y configuración de team foundation server 2010
Instalación y configuración de team foundation server 2010
Naim Jhon Cruzado Paredes
 
Un Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceUn Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en Salesforce
Esteve Graells
 

La actualidad más candente (20)

Jenkins ci + selenium
Jenkins ci + seleniumJenkins ci + selenium
Jenkins ci + selenium
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
SQL en Visual Studio
SQL en Visual StudioSQL en Visual Studio
SQL en Visual Studio
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Preparedstatement
PreparedstatementPreparedstatement
Preparedstatement
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)
 
Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#Servicios de nube en Microsoft Azure con C#
Servicios de nube en Microsoft Azure con C#
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
s20150425 introduccion a_azureautomation_es
s20150425 introduccion a_azureautomation_ess20150425 introduccion a_azureautomation_es
s20150425 introduccion a_azureautomation_es
 
Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#Cuentas de Almacenamiento en Microsoft Azure con C#
Cuentas de Almacenamiento en Microsoft Azure con C#
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Máquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .NetMáquinas Virtuales en Microsoft Azure con C# .Net
Máquinas Virtuales en Microsoft Azure con C# .Net
 
20150416 releasemanagement
20150416 releasemanagement20150416 releasemanagement
20150416 releasemanagement
 
Bases de datos SQL Azure en Microsoft Azure con C#
Bases de datos SQL Azure en Microsoft Azure con C#Bases de datos SQL Azure en Microsoft Azure con C#
Bases de datos SQL Azure en Microsoft Azure con C#
 
Instalación y configuración de team foundation server 2010
Instalación y configuración de team foundation server 2010Instalación y configuración de team foundation server 2010
Instalación y configuración de team foundation server 2010
 
Un Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceUn Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en Salesforce
 

Destacado

Calentamiento Global
Calentamiento  GlobalCalentamiento  Global
Calentamiento Global
guest62a6b64
 
Yacimientos Arqueologicos De Epoca R En La Com
Yacimientos Arqueologicos De Epoca R En La ComYacimientos Arqueologicos De Epoca R En La Com
Yacimientos Arqueologicos De Epoca R En La Com
ameliagp
 
Centro De InvestigacióN Roche Elena Arbona
Centro De InvestigacióN Roche Elena ArbonaCentro De InvestigacióN Roche Elena Arbona
Centro De InvestigacióN Roche Elena Arbonatallera
 
L\'Accélérateur N°10
L\'Accélérateur N°10L\'Accélérateur N°10
L\'Accélérateur N°10
Christophe Turcry
 
Cuadernllo saia - ANA CECILIA NAVEA
Cuadernllo saia - ANA CECILIA NAVEA Cuadernllo saia - ANA CECILIA NAVEA
Cuadernllo saia - ANA CECILIA NAVEA
Mervin Díaz Lugo
 
El Trabajo De Campo
El Trabajo De CampoEl Trabajo De Campo
El Trabajo De CampoJulio
 
Architecture.médiéval
Architecture.médiévalArchitecture.médiéval
Architecture.médiévalmme_robert
 
L’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUN
L’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUNL’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUN
L’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUN
afd_slides
 
Institutos De Invest Santiago De Compostela Mercedes GonzáLez
Institutos De Invest Santiago De Compostela Mercedes GonzáLezInstitutos De Invest Santiago De Compostela Mercedes GonzáLez
Institutos De Invest Santiago De Compostela Mercedes GonzáLeztallera
 
Pixelis campagne de communication Prépabac Hatier
Pixelis campagne de communication Prépabac HatierPixelis campagne de communication Prépabac Hatier
Pixelis campagne de communication Prépabac Hatier
Pixelis
 
Parmenie children 2556
Parmenie children 2556Parmenie children 2556
Parmenie children 2556sroyjan
 
Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...
Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...
Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...Yosra Walid
 
A l’estiu ens ho passem molt bé!!
A l’estiu ens ho passem molt bé!!A l’estiu ens ho passem molt bé!!
A l’estiu ens ho passem molt bé!!llarcuques
 
LA WEB
LA WEBLA WEB
LA WEB
dariobuitron
 

Destacado (20)

Calentamiento Global
Calentamiento  GlobalCalentamiento  Global
Calentamiento Global
 
Actividad 2y 3
Actividad 2y 3 Actividad 2y 3
Actividad 2y 3
 
Yacimientos Arqueologicos De Epoca R En La Com
Yacimientos Arqueologicos De Epoca R En La ComYacimientos Arqueologicos De Epoca R En La Com
Yacimientos Arqueologicos De Epoca R En La Com
 
Los desechos y el reciclaje
Los desechos y el reciclajeLos desechos y el reciclaje
Los desechos y el reciclaje
 
Centro De InvestigacióN Roche Elena Arbona
Centro De InvestigacióN Roche Elena ArbonaCentro De InvestigacióN Roche Elena Arbona
Centro De InvestigacióN Roche Elena Arbona
 
Armvop programme scientifique
Armvop programme scientifiqueArmvop programme scientifique
Armvop programme scientifique
 
L\'Accélérateur N°10
L\'Accélérateur N°10L\'Accélérateur N°10
L\'Accélérateur N°10
 
Cuadernllo saia - ANA CECILIA NAVEA
Cuadernllo saia - ANA CECILIA NAVEA Cuadernllo saia - ANA CECILIA NAVEA
Cuadernllo saia - ANA CECILIA NAVEA
 
El Trabajo De Campo
El Trabajo De CampoEl Trabajo De Campo
El Trabajo De Campo
 
Architecture.médiéval
Architecture.médiévalArchitecture.médiéval
Architecture.médiéval
 
Ppt Estado Del Arte1
Ppt Estado Del Arte1Ppt Estado Del Arte1
Ppt Estado Del Arte1
 
L’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUN
L’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUNL’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUN
L’AFD, LES ONG ET LA SOCIÉTÉ CIVILE AU CAMEROUN
 
Natura1 T01
Natura1 T01Natura1 T01
Natura1 T01
 
Institutos De Invest Santiago De Compostela Mercedes GonzáLez
Institutos De Invest Santiago De Compostela Mercedes GonzáLezInstitutos De Invest Santiago De Compostela Mercedes GonzáLez
Institutos De Invest Santiago De Compostela Mercedes GonzáLez
 
Pixelis campagne de communication Prépabac Hatier
Pixelis campagne de communication Prépabac HatierPixelis campagne de communication Prépabac Hatier
Pixelis campagne de communication Prépabac Hatier
 
Parmenie children 2556
Parmenie children 2556Parmenie children 2556
Parmenie children 2556
 
Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...
Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...
Implémentation d'une solution d'accès mobile aux données de Microsoft Dynamic...
 
A l’estiu ens ho passem molt bé!!
A l’estiu ens ho passem molt bé!!A l’estiu ens ho passem molt bé!!
A l’estiu ens ho passem molt bé!!
 
LA WEB
LA WEBLA WEB
LA WEB
 
base de datos
base de datosbase de datos
base de datos
 

Similar a [Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)

Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
Jose Juan R. Zuñiga
 
Mvc
MvcMvc
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
Carlos Gavidia-Calderon
 
MVC
MVCMVC
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
Senior Dev
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
williamsm
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Oscar Gensollen
 
Jquery Hmvc
Jquery HmvcJquery Hmvc
Modelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasModelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capas
Alex Uhu Colli
 
MVC
MVCMVC
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
Jesus Caceres Tello
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
Juan Carlos Prieto
 
NET MAUI Terasoft.pptx
NET MAUI Terasoft.pptxNET MAUI Terasoft.pptx
NET MAUI Terasoft.pptx
Luis775803
 

Similar a [Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz) (20)

Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
Mvc
MvcMvc
Mvc
 
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
 
Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
MVC
MVCMVC
MVC
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
Patron mvc struts
Patron mvc strutsPatron mvc struts
Patron mvc struts
 
Jquery Hmvc
Jquery HmvcJquery Hmvc
Jquery Hmvc
 
Modelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capasModelo vista controlador vas Programacion por n capas
Modelo vista controlador vas Programacion por n capas
 
MVC
MVCMVC
MVC
 
01 introducción
01 introducción01 introducción
01 introducción
 
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
NET MAUI Terasoft.pptx
NET MAUI Terasoft.pptxNET MAUI Terasoft.pptx
NET MAUI Terasoft.pptx
 

Más de Microsoft Argentina y Uruguay [Official Space]

Run 20 Track SQL Server
Run 20 Track SQL ServerRun 20 Track SQL Server
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
Microsoft Argentina y Uruguay [Official Space]
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
Microsoft Argentina y Uruguay [Official Space]
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
Microsoft Argentina y Uruguay [Official Space]
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
Microsoft Argentina y Uruguay [Official Space]
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
Microsoft Argentina y Uruguay [Official Space]
 
(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2
Microsoft Argentina y Uruguay [Official Space]
 
(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1
Microsoft Argentina y Uruguay [Official Space]
 
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
Microsoft Argentina y Uruguay [Official Space]
 

Más de Microsoft Argentina y Uruguay [Official Space] (20)

CodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguroCodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguro
 
CodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con SilverlightCodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con Silverlight
 
CodeCamp 2010 | FBI- Fácil Business Intelligence
CodeCamp 2010 | FBI- Fácil Business IntelligenceCodeCamp 2010 | FBI- Fácil Business Intelligence
CodeCamp 2010 | FBI- Fácil Business Intelligence
 
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con LinuxCodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
 
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
 
CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0
 
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de controlCodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
 
CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010
 
Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40
 
Run 2 0 keynote azure
Run 2 0 keynote azureRun 2 0 keynote azure
Run 2 0 keynote azure
 
Run 20 Track SQL Server
Run 20 Track SQL ServerRun 20 Track SQL Server
Run 20 Track SQL Server
 
Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
 
(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2
 
(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1
 
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
 

[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)

  • 1. ASP.NET MVC A FULL Matias Juan / mjuan@tecnosoftware.com.ar Jonathan Solarz / jsolarz@tecnosoftware.com.ar Tecnosoftware S.A.
  • 2. Objetivos Que es ASP.NET MVC Unit Testing con ASP.NET MVC Extendiendo ASP.NET MVC
  • 3. ASPNET MVC Foco en separación de responsabilidades (MVC) REST (en contraste a Postback) Extensibilidad Mejor soporte para TDD
  • 4. Componentes principales en MVC Routing, Routetables Model, BussinessLogic & DomainEntities Controllers, PresentationLogic Views, PresentationModel, Modelstate
  • 5. El framework en funcionamiento Browser MvcHandler Controller Model View Post New InvokeAction InvokeMethod Lookup View Render (ViewData) HTML
  • 6. Demo Ejemplo simple de que hace el ASPNET MVC
  • 7. Unit testing Probar partes del sistema de manera individual asegurando que funcionan correctamente Provee un contrato escrito y estricto que una porcion de código debe cumplir Como resultado podemos encontrar problemas de manera temprana y de manera instantánea
  • 8. Probando la lógica de presentación Aseguremos que todo lo que llega a la vista esta testeado Probamos lógica de navegación Probamos las validaciones La vista la podemos probar navegando el sitio manualmente o con alguna herramienta automatizada
  • 9. Demo Agregamos algo de unit testing
  • 10. ModelBinders Extensión del framework que permite crear instancias de clases en base a valores enviados por request. Al action llega el objeto instanciado y no los valores del request Nos permite participar del ciclo de vida de creación de la instancia permitiéndonos por ejemplo validar los atributos y agregar mensajes de error invalidando el modelo
  • 11. Demo Vemos como simplificamos la responsabilidad del controller agregando el uso de binders
  • 12. ActionFiltrers Nos permiten interceptar distintos puntos de la ejecución de un action Se decoran controllers y/o actions Reutilizamos lógica de presentación Ejemplos Validaciones Carga de datos en el viewData Caché
  • 13. Demo Aplicamos lógica de presentación en distintos puntos de la aplicación. La responsabilidad la tiene el filtro
  • 14. ControllerFactory Necesitamos cambiar la manera de instanciar controllers Por ejemplo: Para integrar la solución con un IoCcontainer y poder inyectar dependencias Request MvcHandler IController MvcRouteHandler IControllerFactory
  • 15. Demo Integramos la solución con un IoCcontanier y todo es automágicamente inyectado
  • 16. Contribuciones MvcContrib ViewDataExtensions : nospermitetipar el viewDataparavariosobjetos Factories de controllers para containers IoC: StructureMap, Windsor, Spring.Net, etc UI Helpers ActionResults Filters View Engines Controllers Binders
  • 17. Referencias ASPNET MVC Referencia: http://www.asp.net/learn/mvc/ Books: http://www.asp.net/community/books/ Unit Testing y Mocking Nunit: http://www.nunit.org/ NMOCK: http://www.nmock.org/index.html RHINO MOCK: http://ayende.com/projects/rhino-mocks.aspx Extras MvcContrib: http://www.codeplex.com/MVCContrib ValidatorToolkit: http://mvcvalidatortoolkit.codeplex.com/

Notas del editor

  1. Acaseteamos las expectativas de la presentación. Explicamos que veremos los temas mas interesantes del framework viendo código, por lo que los ejemplos muestran esto.Extendiendo:Unit Testing:Este es creo el punto más interesante así que mostramos distintas estrategias para sacarle jugo al unit testing usando algunos frameworks como mockups, inversión de control einyección de dependencias, etc.
  2. The ASP.NET MVC framework provides the following features:Separation of application tasks (input logic, business logic, and UI logic), testability, and test-driven development (TDD) by default. All core contracts in the MVC framework are interface-based and can be tested by using mock objects, which are simulated objects that imitate the behavior of actual objects in the application. You can unit-test the application without having to run the controllers in an ASP.NET process, which makes unit testing fast and flexible. You can use any unit-testing framework that is compatible with the .NET Framework.An extensible and pluggable framework. The components of the ASP.NET MVC framework are designed so that they can be easily replaced or customized. You can plug in your own view engine, URL routing policy, action-method parameter serialization, and other components. The ASP.NET MVC framework also supports the use of Dependency Injection (DI) and Inversion of Control (IOC) container models. DI allows you to inject objects into a class, instead of relying on the class to create the object itself. IOC specifies that if an object requires another object, the first objects should get the second object from an outside source such as a configuration file. This makes testing easier.A powerful URL-mapping component that lets you build applications that have comprehensible and searchable URLs. URLs do not have to include file-name extensions, and are designed to support URL naming patterns that work well for search engine optimization (SEO) and representational state transfer (REST) addressing.Support for using the markup in existing ASP.NET page (.aspx files), user control (.ascx files), and master page (.master files) markup files as view templates. You can use existing ASP.NET features with the ASP.NET MVC framework, such as nested master pages, in-line expressions (<%= %>), declarative server controls, templates, data-binding, localization, and so on.Support for existing ASP.NET features. ASP.NET MVC lets you use features such as forms authentication and Windows authentication, URL authorization, membership and roles, output and data caching, session and profile state management, health monitoring, the configuration system, and the provider architecture.
  3. Componentes significativos del frameworkControllers:The focus of the Model-View-Controller pattern is the controller. With this pattern, every request is handled by a controller and rendered by a view. Without the controller, presentation and business logic would move to the view, as we have seen with Web Forms. With the ASP.NET MVC Framework, every request routes to a controller, which is simply a class that implements the IController interface. Microsoft provides the base class System.Web.Mvc.Controller to make creating a controller easy. The controller base class you choose is not crucial because most request processing goes into executing the ActionResult, which is the type that each action returns.ControllerAction:An action is a method that handles a particular request. This method can take no parameters or many, but by the time the action method finishes executing, there ought to be one or many objects ready to be sent to the view, and the name of the view should be selected if the view does not follow the convention of having the same name as the action.PresentationModel:The presentation model is responsible for transforming the domain model into a representation that is useful for the presentation layer, namely, the controller and view. Whereas the domain model is an ndimensionobject graph that accurately represents the real world, the presentation model takes these objects and projects them into a flatter model that can easily be represented on a graphical screen.NOTE The presentation model can be many things. Ultimately, it is an object model that serves a particular screen, not the entire domain. This object model can be populated in isolation, or it can take responsibility to populate itself when a domain object is passed into the constructor. The presentation model goes in the /Models folder in an ASP.NET MVC Framework application. The presentation model is part of the presentation layer and should not be referenced by the rest of the application. Typically a complex screen will require a presentation model object graph.