Si hablamos de los fundamentos de ASP.NET MVC nos tenemos que remontar a 2008. Fecha en la que aparecieron las primeras noticias de este nuevo enfoque de desarrollo que descolocó a los desarrolladores de .NET. Ya había costado trabajo adaptarse al modelo de desarrollo de WebForms, que surgió en el año 2002 y este nuevo enfoquen daba un cambio radical y resolvía problemas que hasta entonces no era posible solucionar.
El paso a WebForms fue más sencillo ya que se venía de programar en aplicaciones de escritorio ya que se seguía usando una programación orientada a eventos abstrayéndose de las particularidades de la web. Pero esa abstracción ha sido un problema para los desarrolladores, con aplicaciones que eran difíciles de mantener y testear.
La aparición de ASP.NET MVC surge como necesidad de solventar dichos problemas y adaptarse a generaciones futuras de desarrollo orientado a la web y muchas mejoras que hasta entonces no se tenían, como la generación de URLs amigables o la integración con AJAX.
Tras su aparición, poca gente se decidió a seguir usando webForms debido a todas las ventajas creadas bajo este nuevo paradigma de programación, aunque el paso de una a otra fue bastante complejo y los desarrolladores tuvieron que formarse para no quedarse atrás.
El patrón Modelo Vista Controlador (MVC)
Al principio de esta entrada hablábamos de la aparición en 2008 de los fundamentos de ASP.NET MVC, pero el patrón de Modelo Vista Controlador es mucho más antiguo incluso que WebForms. Tiene su origen en el 1979, creado por Trygve M. H. Reenskaug, mientras este trabajaba para Xerox PARC y lleva usándose en otros lenguajes de programación desde hace décadas.
Este patrón de arquitectura de desarrollo nos ayuda a estructurar los componentes de una aplicación y define la responsabilidad que debe tener cada elemento y las relaciones entre los diferentes elementos de la vista, el modelo y el controlador.
La idea principal es separar toda la arquitectura de una aplicación en tres grandes capas, las tres que dan nombre al paradigma:
- El Modelo
- La Vista
- El controlador
A continuación una pequeña descripción de cada una de las grandes capas de los Fundamentos de ASP.NET MVC:
El Modelo
En el Modelo desarrollaremos la representación de los datos del dominio. Esto viene a decir que en el modelo tendremos definidas todas las entidades que van a almacenar datos dentro de nuestra aplicación.
Usaremos el modelo de ASP.NET MVC para gestionar el guardado y recuperación de los datos de las entidades del dominio, así como la implementación de reglas para gestionar los datos del dominio que vienen del motor de Base de Datos utilizado.
Asimismo, encontraremos la lógica de negocio de la aplicación, es decir, la implementación de las reglas, acciones y restricciones que nos permiten gestionar las entidades del dominio y de la lógica de negocio de la aplicación. Será por tanto el responsable de que el sistema se encuentre siempre en un estado consistente e íntegro.
La Vista
La Vista es la encargada de mostrar al usuario nuestra aplicación, por lo que la podemos definir como la interfaz de la misma. Se puede decir entonces, que la Vista es la representación del Modelo para una acción concreta.
Ya comentamos más arriba que dejábamos atrás la programación orientada a eventos para pasar a la programación orientada a acciones. La Vista se encargará de mostrar al usuario una interfz de usuario en la que pueda invocar acciones del sistema.
Para tener un simil con WebForms, la vista son los componentes .cshtml o .vbhtml del lenguaje Razor (dependiendo del lenguaje Back-End escogido) y sustituyen a los antiguos .aspx. En este tipo de páginas maquetaremos la parte visual de la aplicación con lenguajes de cliente como HTML, JavaScript y Hojas de Estilo CSS.
El Controlador
El controlador es el encargado de de recoger la acciones del usuario en la vista, traducirlas y trabajar con el modelo para la realización de esa acción, ya sea el pulsado de un botón de guardado o navegando a otra página de nuestra aplicación.
La misión del controlador es hacer de intermediario entre la Vista y el Modelo. Entre el trabajo que se debe desarrollar en el controlador es la trasformación de los datos para que ambas capas “se entiendan”.
En el Controlador podemos encontrar todos los componentes capaces de procesar las acciones que solicita el usuario en la Vista sobre el modelo, así como elegir las vistas apropiadas en cada momento.
¿Quieres saber cómo se conectan el Modelo, la Vista y el controlador de los fundamentos de ASP.NET MVC ? Revisa esta entrada.