ASP.NET MVC Framework

Una de las cosas que mucha gente ha preguntado sobre ASP.NET es sobre un soporte integrado para desarrollar aplicaciones usando el modelo vista controlador (MVC).

Este último fin de semana en las conferencias Alt.NET en Austin hice una demo sobre el nuevo framework ASP.NET MVC en el que mi equipo ha estado trabajando. Podéis ver el video de la presentación en el blog de Scott Hanselman.

Vamos a publicar una primera preview de este framework a finales de este año. Y lo publicaremos como una característica completamente soportada de ASP.NET en la primera mitad del año que viene.

¿Qué es un framework de modelo vista controlador (MVC)?

MVC es un framework metodológico que divide la implementación de una aplicación en tres roles: modelos, vistas y controladores.

  • Los "modelos" de una aplicación basada en MVC son los componentes responsables de mantener el estado. Normalmente el estado se guarda en una base de datos (por ejemplo: podríamos tener una clase Product que se usa para representar los datos de una tabla Products en SQL).
  • Las "vistas" son los componentes responsables de mostrar la interfaz de usuario de la aplicación. Normalmente esta interfaz de usuario se crea a parte del modelo de datos (Por ejemplo: podriamos crear una vista "Edit" que muestre textboxes, dropdowns y checkboxes dependiendo del estado actual de un objeto Product).
  • Los "controladores" son los encargados de administrar la interacción con el usuario final, manipular el modelo, y en último lugar elegir una vista para renderizar la interfaz de usuario. En una aplicación MVC la vista solo muestra la información - es el controlador el que administra y responde a las entradas de usuario y a las interacciones.

Uno de los beneficios de usar una metodología MVC es que ayuda a mantener una separación limpia entre modelos, vistas y controladores en la aplicación. Manteniendo una separación clara de conceptos hace que el testing d elas aplicaciones sea mucho más fácil, ya que los contratos entre diferentes componentes de la aplicación están mejor definidos y articulados.

El patrón MVC también nos ayuda a realizar un desarrollo basado en test (Test Driven Development, TDD) - donde implementamos test unitarios automáticos, que definen y verifican los requerimientos del nuevo código, antes de que escribamos el código.

Unos pocos detalles sobre el ASP.NET MVC Framework

Estoy realizando algunos post en plan tutorial sobre este nuevo framework y los tendremos disponibles en unas semanas (mientras tanto, la mejor forma para aprender más es ver el video de la presentación en Alt.net).

Unos cuantos detalles:

  • Nos permite una separación clara de detalles, testeabilidad y TDD por defecto. Todos los contratos del núcleo del framework MVC están basados en interfaces y son fácilmente intercambiables (incluye interfaces como IHttpRequest/IHttpResponse). Podemos ejecutar test unitarios sin tener que ejecutar los controladores en un proceso ASP.NET (haciendo estos test mucho más rápidos). Podemos usar el framework de test unitarios que queramos (incluyendo Nunit, MBUnit, MS Test, etc).
  • Es altamente extensible y plugeable. Todo en el framework MVC está diseñado para que pueda ser personalizado fácilmente (por ejemplo: podemos poner nuestro propio motor de vistas, políticas de rutado, serialización de parámetros, etc).
  • Incluye un potente mapeador de URL que nos permite crear aplicaciones con URLs limpias. Las urls no necesitan tener extensiones, y están diseñadas para soportar un sistema de nombres amigable (SEO y REST). Por ejemplo, Podría mapear la url /products/edit/4 para la acción de editar de la clase ProductsController , o mapear /Blogs/scottgu/10-10-2007/SomeTopic/ a la acción "DisplayPost" de una clase BlogEngineController.
  • El framework MVC soporta los archivos .ASPX, ASCX y .MASTER como "view templates" (es decir, podemos usar cualquier caracteristcia de ASP.NET como las masterpages anidadas, <%= %>, snippets, controles de servidor declarativos, templates, data-binding, localization, etc). Sin embargo, no usa el modelo de interacción post-back para las comunicaciones con el servidor, sino que, tendremos que rutar las interacciones del usuario a una clase controlador (lo que implica, entre otras cosas, que no tendremos viewstate o el ciclo de vida de las páginas en las vistas de MVC).
  • Soporta todas las características de ASP.NET como forms/windows authentication, URL authorization, membershitp/roles, cacheo de datos, administración del estado de la session/profile, health monitoring, sistema se configuración, etc.

Resumen

Si estáis buscando la manera de crear aplicaciones web con el modelo vista controlador, creo que ASP.NET MVC es una opción limpia y fácil de usarl. Os permitira mantener separados todos los conceptos, así como os facilitará el testing y TDD.

Escribiré algunos post con más tutoriales sobre cómo funciona MVC.

Espero que sirva,

Scott.

Traducido por: Juan María Laó Ramos.

toH tlhIngan Hol DajatlhlaH ‘e’ DaneH’a’?

Artículo original: http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx

14 pensamientos en “ASP.NET MVC Framework

  1. Pingback: Más información sobre Microsoft ASP.NET MVC Framework - Variable not found, 0:1

  2. Pingback: ASP.NET MVC Framework (Primera parte) « Thinking in .NET

  3. Pingback: Actualización del Road-Map del ASP.NET MVC Framework « Thinking in .NET

  4. Abuiles

    Hola, Instale el ASP.NET 3.5 Extensions, luego cuando fui a tratar de trajar con el MVC, no encontre esta opcion, sabes que podria ser?

    Gracias

    Responder
  5. Alex Alfonso

    Hola todos, Yo tengo el Visual studio 2008 profesional, e instale el ASP.NET 3.5 extensions preview 2, y cuando entre a ver la opcion para adicionar un prtojecto MVC nuevo, no me muestra dichas opciones que podria estar haciendo mal ?? , intente crear la estructura de directorios y agregar las referencias dll, pero no logro q me funcione?

    agradezco su Colaboración.

    Responder
  6. a

    Como siempre Microsoft continúa su política de copiar la tecnología que ya existe en otras plataformas y/o lenguajes y venderla como algo novedoso.
    Para los programadores en Java esto es tan antiguo como el C.
    Si quieres algo limpio y bueno en lo que a MVC se refiere decantáte por Java puesto que sus creadores ya están de vuelta de todos los problemas y pormenores que te proporcionará, sin duda, la copiona Microsoft.

    Responder
  7. Vio

    Amigo a:

    Me da la sensación de que hay algo de miedo en torno a ASP.NET MVC.
    Que yo sepa el patrón MVC (Modelo Vista Controlador) no es nada nuevo. Junto a todos los patrones, son mas viejos que yo.
    ¿Reinventar la rueda? ¿Copiar? ¿Mejorar?.
    ¿No es ese el espíritu llamado “free software (not like free beer)”?.
    ¿Has leido algo más de este humilde blog para ver la temática que trata?
    ¿Sabes que el código fuente de ASP.NET MVC está disponible en Codeplex?
    ¿Porque no le hechas un vistazo al código y comentas en ese sitio lo que quieras?

    No creo que este blog sea el más adecuado para hacer este tipo de críticas.
    El sitio en codeplex donde está el código fuente de ASP.NET MVC es este:
    http://www.codeplex.com/aspnet

    Espero que sirva

    Responder
  8. fabian

    Quisiera saber porque es necesario aplicar el .NET Framework 3.5 con Visual Studio 2008 justamente para aplicar este patrón MVC.

    Acaso no se lo podría implementar utilizando por poner un ejemplo el Visual Studio 2003 ?

    Qué aporte tiene el hecho de usar el framework 3.5 y no el 1.1 para usar este patrón.

    Por favor si alguien me puede dar una mano en estas preguntas.

    Muchas gracias.

    Responder
    1. Vio

      Hola fabian:
      ASP.NET MVC es un framework para crear aplicaciones aplicando el patron MVC con ASP.NET. No significa que no puedas aplicarlo con Visual Studio 2003.
      Tienes más información en este mismo blog en la categoría MVC o en http://www.asp.net/mvc

      Responder
  9. Pingback: Instalando ASP.NET MVC en VS2010: ASP.NET MVC 1.1 - Jersson on Geeks·ms

  10. Javier

    aLGUIEN SABE ALGO DEL FILE UPLOAD CON MVC??? ….LO QUE TENGO ME SUBE UN ARCHIVO Y ME LO GUARDA EN UNA CARPETA PERO COMO GUARDO ESA RUTA EN LA BD?

    Responder

Deja un comentario