MVC en ASP.NET

Hace unos días, Scott Guthrie dió más detalles sobre la implementación que se viene de MVC para ASP.NET de la mano de Microsoft:

ASP.NET MVC Framework

One of the things that many people have asked for over the years with ASP.NET is built-in support for developing web applications using a model-view-controller (MVC) based architecture.

Last weekend at the Alt.NET conference in Austin I gave the first public demonstration of a new ASP.NET MVC framework that my team has been working on.  You can watch a video of my presentation about it on Scott Hanselman’s blog here.

Algunos comentarios de Scott:

Qué es un framework MVC?

MVC divide la implementación de una aplicación en tres roles: modelos, vistas y controladores.

  • “Modelos” en una aplicación MVC son los componentes de la aplicación responsables de mantener el estado. Frecuentemente este estado es persistido en una base de datos (por ejemplo: podemos tener una clase Producto que es usada para reprensentar datos de una tabla Productos en un SQL).
  • “Vistas” son los componentes responsables de presentar la interfaz de usuario. Típicamente esta UI es creada desde los datos del modelo (por ejemplo: podemos crear una vista “Editar” de producto que coloque cajas de textos, listas desplegables y checkbos, basados en el estado actual del objeto Producto).
  • “Controladores” son los componentes encargados de manejar la interacción con el usuario final, manipulando el modelo, y finalmente elegir la vista para mostrar la UI. En una aplicación MVC la vista es sólo para exhibir información: es el controlador el que maneja y responde a la entrada del usuario y su interacción.

Detalles de implementación

Sigue Scott:

Uno de los beneficios de usar una metodología MVC es que ayuda a reforzar una clara separación de las responsabilidades entre el modelo, vistas y controladores de una aplicación. Mantener esa clara separación hace que la prueba de la aplicación sea más fácil, ya que el contracto entre los diferentes componentes está más claramente definido y articulado.

Algunos detalles que describe de la implementación de Microsoft:

  • Permite la separación de responsabilidades, testeo y uso de TDD. Todos los contratos principales del framework MVC son interfaces que pueden ser simulados (ahora hay interfaces para IHttpRequest-IHttpResponse). Se puede usar el framework de testeo que uno quiera (incluyendo NUnit, NBUnit, MS Test, etc).
  • Es altamente extensible y admite plugins. Todo en el framework MVC de Microsoft está diseñado para que pueda ser fácilmente reemplazado o adaptado (por ejemplo, uno puede opcionalmente agregar su propia maquinaria de vista, política de ruteo, serialización de parámetros, etc.). También soporta el uso de inyección de dependencias y modelos de contenedores IOC (Windsor, Sprint.NET, NHibernate, etc..).
  • Incluye un muy poderoso mapeador de URL que nos permite armar aplicaciones con URLs limpias. Las URL no necesitan tener extensiones, y están diseñadas para soportar fácilmente patrones de nombres para SEO (Search Engine Optimization) y REST. Por ejemplo, uno puede fácilmente mapear /products/edit/4 a la acción del botón “Editar” en un controlador de productos, o mapear /Blogs/scottgu/10-10-2007/SomeTopic/ a la acción “DisplayPost” de una clase BlogEngineController.
  • El framework MVC soporta el uso de los archivos ASP.NET ya existentes, como .aspx, .ascx, .master, como “plantillas de vista” (siginfica que uno puede usar las capacidades de ASP.NET como master pages anidades, código <% %>, controles del servidor, plantillas, enlace a datos, localización). No usa, sin embargo, el modelo postback de interacción con el servidor. En cambio, uno rutea toda la interacción del usuario a una clase Controller, lo que ayuda a separar una clara separación de responsabilidades y testeo (eso implica que no hay viewstate o ciclo de vida de página en las vistas MVC).
  • El framework ASP.NET MVC soporta totalmente las características de ASP.NET como autenticación Forms o Windows, autorización por URL, membresía y roles, caché de datos y salida, manejo de perfiles y session, monitoreo de salud, sistema de configuración, la arquitectura de providers, etc.

Bueno, es una parva de novedades. Veremos cuándo queda disponible para que podamos evaluarla y usarla.

Vean los comentarios en el post de Scott: tienen mayores detalles muy interesantes.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/

This entry was posted in 1389, 5954. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>