¿Qué es ASP.NET MVC?

Si bien este post fue escrito en Octubre del 2009, durante la migración desde geeks.ms he ido revisando cada post publicado para intentar mejorar tanto la apariencia como las explicaciones. Por ello, voy a actualizar el contenido en cuanto a la última versión de ASP.NET MVC se refiere. ¡Empecemos!

¿Qué es MVC?

MVC significa Model View Controller y no es otra cosa que un patrón de arquitectura descrito por primera vez por Trygve Reenskaug en el año 1979.
Este patrón tiene como objetivo principal la separación de conceptos en tres capas fundamentalmente:

  • Modelo: Es la encargada del manejo de los datos de nuestra aplicación. Es decir, en ella deberíamos centrarnos en la lógica de negocio, persistencia, etcétera.
  • Vista(s): Componen la interfaz de usuario. La vista se ocupa de la representación de los datos sin contener absolutamente nada de lógica de negocio. Antes de llegar a esta capa, los datos ya han sido tratados y hay que entender los datos mostrados como un resultado de un proceso anterior (con proceso anterior me refiero a lo ocurrido en el Modelo).
  • Controlador(es): Es la capa que actúa de intermediaria entre la vista y el modelo.

¿Cómo se conectan entre ellas?

  1. Un usuario hace una petición a nuestro sitio web a través de una de las vistas. Dentro del contexto de MVC, a estas peticiones se las denominarán acciones.
  2. Esa vista contactará con su controlador y solicitará la acción requerida por el usuario.
  3. El controlador, conociendo la acción que el usuario espera, se pondrá en contacto con el Modelo para poder obtener los datos necesarios para finalizar la misma.
  4. Una vez recibimos respuesta de la capa encargada de los datos, el controlador determinará qué vista será mostrada al usuario.
  5. Por último, la vista elegida mostrará el resultado obtenido por medio del intermediario (el controlador).

Esta es una forma muy resumida y, a mi parecer, comprensible a grosso modo para conocer un poco el funcionamiento de este patrón. Si lo comparamos con Web Forms, las acciones de ASP.NET MVC serían sus eventos y la parte del Modelo la podríamos tener un proyecto aparte o bien incluir esa lógica dentro de los propios eventos como en muchas ocasiones hemos visto/hecho. Por lo tanto, gracias a la existencia de un controlador, obtenemos un desacoplamiento entre la vista y la lógica de nuestra aplicación ayudándonos por ejemplo a:

  • Un mantenimiento más efectivo del código. Por ejemplo: Si reutilizamos métodos y es necesario el cambio o la mejora del mismo solamente tendríamos que hacerlo en un único lugar.
  • Es una arquitectura óptima para realizar pruebas unitarias (TDD).
  • Conocemos en todo momento dónde está la parte de código que necesitamos manipular según su responsabilidad (No hay que buscar entre todos los eventos de todas las páginas aspx dónde puede estar duplicada la misma lógica).
  • Etcétera.

¿Cómo empiezo con ASP.NET MVC?

Para trabajar con ASP.NET MVC tenemos una serie de plantillas proporcionadas por Microsoft. Si utilizamos Visual Studio 2008, será necesario instalar dichas plantillas a través de Microsoft Web Platform Installer.

Por otro lado, desde el año 2010, ya está disponible la versión definitiva de Visual Studio 2010 donde tenemos todo lo necesario para comenzar. En este post voy a mostrarlo desde Visual Studio 2010 pero las imágenes en 2008 no difieren en absoluto a día de hoy.
Si decidimos crear un nuevo proyecto, y nos posicionamos en nuestro lenguaje preferido en el apartado Web veremos que tenemos dos plantillas para este patrón.

ASP.NET MVC 2 Web Application es una plantilla que contiene la estructura propia de MVC, pero además una serie de ejemplos para poder comprobar el funcionamiento y empezar a trabajar sobre una base. Cuando aún no tenemos conocimientos suficientes del funcionamiento de este patrón, lo ideal es comenzar a trabajar utilizando esta plantilla.

Por otro lado, ASP.NET MVC Empty Web Application apareció con la segunda versión de ASP.NET MVC debido a la gran demanda que existió a través del feedback de los desarrolladores. Es una plantilla con la estructura de MVC pero, a diferencia de la anterior, completamente limpia para comenzar a trabajar desde cero sin la necesidad de tener que eliminar ningún archivo de ejemplo.

Si creamos un proyecto con cualquiera de las dos plantillas, lo primero que nos va a preguntar es si queremos crear al mismo tiempo un proyecto paralelo para la creación de pruebas unitarias. Ese apartado se escapa del objetivo de este post por lo que vamos a obviarlo por el momento.
Una vez creado el proyecto podemos ver una estructura como la siguiente:

(Click sobre la imagen para ampliar)

Si nos damos cuenta, todos estos archivos son conocidos por todos aquellos que hayan utilizado anteriormente Web Forms solo que la organización es propia de las convenciones elegidas por Microsoft para aplicar MVC. Por ello ¡No hay que tener miedo! En los próximos post iremos viendo cada apartado y cómo interactúan entre ellos.

Espero que este artículo introductorio ayude a quitar un poco el miedo y animaros a nuevas iniciativas con ASP.NET MVC 🙂

¡Saludos!