Model Vista Controlador
¿Que es?
En 1979, Trygve Reenskaug desarrolló una arquitectura para desarrollar aplicaciones interactivas. En este diseño existían tres partes: modelos, vistas y controladores. El modelo MVC permite hacer la separación de las capas de interfaz, modelo y lógica de control de ésta. La programación por capas, es un estilo de programación en la que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño, un ejemplo básico de esto es separar la capa de datos de la capa de presentación al usuario. La ventaja principal de este estilo, es que el desarrollo se puede llevar a cabo en varios niveles y en caso de algún cambio sólo se ataca al nivel requerido sin tener que revisar entre código mezclado. Además permite distribuir el trabajo de creación de una aplicación por niveles, de este modo, cada grupo de trabajo está totalmente abstraído del resto de niveles, simplemente es necesario conocer la API (Interfaz de Aplicación) que existe entre niveles. La división en capas reduce la complejidad, facilita la reutilización y acelera el proceso de ensamblar o desensamblar alguna capa, o sustituirla por otra distinta (pero con la misma responsabilidad). En una aplicación Web una petición se realiza usando HTTP y es enviado al controlador. El controlador puede interactuar de muchas formas con el modelo, luego el primero llama a la respectiva vista (interfaz de usuario) la cual obtiene el estado del modelo y lo muestra al usuario en una respuesta HTTP.
Implementación y uso
Kumbia aprovecha los mejores patrones de programación orientada a la web en especial el patrón MVC (Modelos, Vista, Controladores). Este capítulo describe el funcionamiento general de este paradigma en Kumbia. El objetivo de este patrón es el realizar y mantener la separación entre la lógica de nuestra aplicación, los datos y la presentación. Esta separación tiene algunas ventajas importantes, como Podemos identificar más fácilmente en qué capa se está produciendo un problema con sólo saber su naturaleza. Podemos crear varias presentaciones sin necesidad de escribir varias veces la misma lógica de aplicación. Cada parte funciona independiente y cualquier cambio centraliza el efecto sobre las demás, así que podemos estar seguros que una modificación en un componente realizará bien las tareas en cualquier parte de la aplicación.
Información adicional
La base de Kumbia es el MVC, un tradicional patrón de diseño que funciona en tres capas
Modelos: Representan la información sobre la cual la aplicación opera, su lógica de negocios. Vistas: Visualizan el modelo usando páginas Web e interactuando con los usuarios de éstas. Controladores: Responden a acciones de usuario e invocan cambios en las vistas o en los modelos según sea necesario.
En Kumbia los controladores están separados en partes, llamadas front controller y un en un conjunto de acciones. Cada acción sabe cómo reaccionar ante un determinado tipo de petición. Las vistas están separadas en templates, layouts y partials. El modelo ofrece una capa de abstracción de la base de datos utilizada además dan funcionalidad agregada a datos de sesión y validación de integridad relacional. Este modelo ayuda a separar el trabajo en lógica de negocios (modelos) y la presentación (Vistas).
Por ejemplo, si usted tiene una aplicación que corra tanto en equipos de escritorio y en dispositivos de bolsillo entonces podría crear dos vistas diferentes compartiendo las mismas acciones en el controlador y la lógica del modelo. El controlador ayuda a ocultar los detalles de protocolo utilizados en la petición (HTTP, modo consola, etc.) para el modelo y la vista.
Finalmente, el modelo abstrae la lógica de datos, que hace a los modelos independientes de las vistas La implementación de este modelo es muy liviana mediante pequeñas convenciones se puede lograr mucho poder y funcionalidad.
Caso práctico
Para hacer las cosas más claras, veamos un ejemplo de cómo una arquitectura MVC trabaja para un agregar al carrito. Primero, el usuario interactúa con la interfaz seleccionando un producto y presionando un botón, esto probablemente valida un formulario y envía una petición al servidor.
- El Front Controller recibe la notificación de una acción de usuario, y luego de ejecutar algunas tareas (enrutamiento, seguridad, etc.), entiende que debe ejecutar la acción de agregar en el controlador.
- La acción de agregar accede al modelo y actualiza el objeto del carrito en la sesión de usuario.
- Si la modificación es almacenada correctamente, la acción prepara el contenido que será devuelto en la respuesta – confirmación de la adición y una lista completa de los productos que están actualmente en el carrito. La vista ensambla la respuesta de la acción en el cuerpo de la aplicación para producir la página del carrito de compras.
- Finalmente es transferida al servidor Web que la envía al usuario, quien puede leerla e interactuará con ella de nuevo.