¿Qué es ASP.NET MVC?

Antes que nada les ofrezco una disculpa por la tardanza, hemos tenido trabajo y por eso el retraso, pero sin más preámbulos vamos a comenzar.

Vamos a ver que es ASP.NET MVC, aunque creo que ya muchos de ustedes sabrán lo que es pero para quienes están interesados en conocer esta nueva tecnología, voy a tomar la definición del blog de Scott Guthrië (Vicepresidente de la División de Microsoft Developer) para evitar confusiones de lo que se dice en algunos otros blogs y foros de discusión.

Bueno para comenzar MVC significa (Modelo – Vista – Controlador) y es un framework metodológico que divide la implementación de una aplicación en 3 roles: modelos, vistas y controladores veamos como funciona cada uno:

 

  • 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 la clase Producto que se utiliza para representar los datos de la tabla Productos en SQL Server)
  • Las “vistas” son los componentes responsables de mostrar la interfaz de usuario de la aplicación. Esta UI se crea a partir del modelo de datos (por ejemplo: podríamos crear una vista “Edición” que muestre cajas de texto, controles desplegables (dropdownlist) y checkboxes dependiendo del estado actual de un objeto Producto)
  • Los “controladores” de una aplicación basada en MVC son los componentes responsables la interacción con el usuario final, manipular el modelo y por último elegir una vista para renderizar la UI. En una aplicación MVC la vista solo muestra la información – es el controlador el que administra y responde a las peticiones del usuario y a las interacciones.

 

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

El patrón de MVC también nos ayuda a realizar un desarrollo basado en un test (Test Driven Development – TDD), donde implementaremos test unitarios automáticos, que definen y verifican los requerimientos del nuevo código, antes de que comenzar a tirar líneas de código.

Unos cuantos detalles para compartir acerca del framework ASP.NET MVC:

  • 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 ruteo, 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/valameda/12-04-2009/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 característica 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 enrutar 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, output cache, administración del estado de la session/profile, health monitoring, sistema se configuración, etc.

En resumen si queremos crear aplicaciones con URL limpias que nos facilite el testing y el TDD indudablemente ASP.NET MVC es la mejor opción, recuerden que ASP.NET MVC no viene a suplir o a cambiar nuestro modelo de programación de ASP.NET, sólo es una opción para entregar aplicaciones Web de una forma más sencilla.

Espero sus comentarios sobre este artículo, como ya saben siempre hay que ver los conceptos para poder entrar de lleno a los ejemplos. Si alguien desea compartir algo sobre esta nueva tecnología por favor háganlo en este espacio y así entre todos haremos de este curso uno de los más completos que nos ayudará en nuestro trabajo diario.

S@ludos y nos vemos en la próxima entrega.

 

Published 04-12-2009 12:38 PM por VAlameda

Comentarios

# re: ¿Qué es ASP.NET MVC?

Tuesday, June 30, 2009 3:04 PM por ccordero

Hola!

Cómo funciona la integración o compatibilidad entre el

ASP.NET MVC 1.0 y las formas webforms tradicionales que hacemos con ASP.NET?  Es que he estado leyendo sobre ASP.NET MVC 1.0, y en los ejemplos veo que en lugar de los controles asp:control runat=server, parece que se fomenta más bien el uso de controles HTML.

Me interesaría mucho que nos explicaras más y nos dieras ejemplos, ya que me preocupó un poco que para adoptar el framework  ASP.NET MVC deba sacrificar las facilidades que me brinda el diseñador de aspx.

Por lo demás, muy contenta de que haya iniciado el curso, y ansiosa de la próxima entrega!

Saludos,

Carolina.

# re: ¿Qué es ASP.NET MVC?

Tuesday, June 30, 2009 3:25 PM por ccordero

Otra preguntita Víctor, yo sé que me estoy adelantando, pero quería saber si ASP.NET MVC es apto para desarrollar aplicaciones cuyos componentes puedan distribuirse físicamente en varios servidores, en lugar de tener en un solo servidor tanto componentes de UI (vistas y controllers) como de acceso a datos (model).

Gracias!

# re: ¿Qué es ASP.NET MVC?

Wednesday, July 15, 2009 9:41 PM por VAlameda

Hola Carolina,

En realidad no se dejarán de utilizar las Web Forms tradicionales de ASP.NET mas bien es un nuevo modelo de desarrollo fácil de adoptar ya que como bien dices se basa en HTML y ejecuciones del lado del cliente.

La principal diferencia entre los dos conceptos es que el modelo de Webforms utilizado por ASP.NET es que sigue el mismo patrón de las aplicaciones Winforms utilizando eventos y manteniendo el estado, lo a la larga podemos tener aplicaciones ligeramente más pesadas dependiendo de la complejidad de nuestra aplicación Web.

Mientras que las aplicaciones ASP.NET MVC no mantienen estado, viewstate o postback como lo hacen las Webforms, sin embargo podemos utilizar ambas tecnologías en el mismo proyecto, a medida que vayamos avanzando en el curso notarán que no hay diferencia y ustedes mismos decidirán con cual tecnología será la inclinación para realizar sus desarrollos.

Bueno después de todo este rollo les pido una disculpa por la tardanza en las entregas pero se nos ha complicado debido a nuestro trabajo diario como recordarán este espacio compartimos ideas en nuestro tiempo libre, pero no se desesperen pronto estará la próxima entrega, y no duden en enviar sus comentarios, recuerden que la participación de ustedes nos da impulso para seguir compartiendo conocimientos.

Saludos!

Ofrecido por Community Server (Non-Commercial Edition)