4.10.2011

¿Qué es el Patrón MVC?

Continuando con la serie de post acerca del MVC en ASP.NET voy a proceder a explicar en detalle que es el patrón Model View Controller y que ventajas nos ofrece.

En primera instancia el patrón MVC es una forma de dividir y distribuir la funcionalidad de la capa de presentación en diferentes componentes; estos componentes son:

  1. Model: Contiene la información de una aplicación. En esta capa se incluyen los datos, las reglas de validación y el acceso a los datos.
  2. View: Encapsula la presentación de la aplicación; por ejemplo, en ASP.NET es el HTML.
  3. Controller: Contiene la lógica que controla el flujo del programa. Interactúa con el modelo y las vistas para controlar como fluye la información y como se ejecuta la aplicación.

El siguiente diagrama nos muestra como interactúan las partes del patrón MVC

image

¿Cómo funciona el MVC en ASP.NET?

En general, la vista es responsable de pintar la interface de usuario. La vista depende del modelo y este – el modelo - es el responsable de traer los datos a la vista; por ejemplo, el modelo puede ser una entidad que representa una película y la vista toma las propiedades de este modelo y lo despliega en el HTML. El modelo proviene del Controller. El controller es el responsable de construir un modelo y seleccionar la vista para pintarlo. El controller es como un orquestador. Podemos decir que el controller es como el director de una orquesta; no hace la música, pero coordina para que todos los músicos estén alineados y hagan que la melodía suene como debe sonar. El controller además es el responsable de recibir solitudes del usuario, en ASP.NET solicitudes HTTP. Aquí nos surge otra duda: ¿Cómo el runtime del MVC sabe que controller debe de atender la solicitud HTTP? Esto se logra a través de las rutas en ASP.NET las cuales están definidas en el namespace System.Web.Rounting. Estas “rutas” se direccionan las solicitudes HTTP a los controladores específicos en base a la definición de la ruta que el desarrollador haya hecho a la hora de crear su aplicación en el archivo global.asax.cs y en base al URL especificado a la hora de hacer el submit de la forma – algo que estaremos profundizando en post próximos. En el siguiente código se puede ver el código por defecto generado por el ASP.NET a la hora de crear un proyecto con MVC 2.

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", "{controller}/{action}/{id}",

new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
}

A partir de la definición de las rutas en el archivo asax, el framework MVC de ASP.NET sabe cual controller debe de invocar y con que acción debe de llamarse el controller especificado. Luego de esto, cada una de las acciones pueden retornar una vista, contenido o cualquier otro tipo de ActionResult definido en nuestra aplicación a través del controller.

public ActionResult About()
{
return View(modelo);
}

Seguidamente desplegamos la información utilizando las vistas desarrolladas y enviándole al View el modelo construido en la acción del controller que fue ejecutada. En este caso el controller se construye a partir de múltiples orígenes; pero en el mejor de los casos se construye a partir de la invocación a un método de nuestra lógica de negocios.


Es muy importante destacar que el patrón MVC no tiene ningún impacto en la lógica de negocios ni en la capa de acceso a datos.


Etiquetas de Technorati: ,

2 comentarios:

Anónimo dijo...

Excelente NOTA

Donde podemos conseguir un curso de MVC o algún instructor para Latino-America

Diego Rojas dijo...

Si gustas me puedes escribir a diego.rojas [at] formsevolution.net