Dentro de la arquitectura de software tenemos diferentes patrones de diseño que permiten dar solución a la aplicación, el sistema, el sitio que estemos desarrollando…Entre ellos, uno de los patrones que más se adapta a la web es el patrón del modelo – vista – controlador (MVC). Cuando hablamos de una aplicación web, respecto de un sitio web convencional, estamos interactuando con información, analizando datos, estadística, entregando reportes. En ese sentido, las aplicaciones web tienden a generar una respuesta dinámica a diferencia de los sitios web.
Aspectos a considerar
Las aplicaciones web tienen 3 aspectos a considerar dentro de su desarrollo
- El código de inserción, consulta, actualización o eliminación de datos, lo que se conoce como CRUD.
- El código del diseño de las páginas a mostrar.
- El código que controla el flujo de las páginas de la aplicación.
Basándonos en estas 3 grandes capas o secciones es que podemos explicar el patrón modelo – vista – controlador.
Separación de los aspectos a considerar
Una forma de separar estos 3 aspectos es usando el patrón MVC: modelo – vista – controlador, donde:
- El modelo representa la lógica de negocio (manipulación de datos): cuando hablamos de lógica de negocio, significa en bases de datos, que todo el proceso que implica entender como funciona o cuales son las necesidades de nuestro usuario, es decir, cual es la lógica del negocio. Entender la manipulación de los datos que queremos modelar.
- Las vistas representan la presentación de dichos datos, es decir, el diseño de las páginas.
- El controlador es el que sirve como intermediario entre el modelo y la vista, es el que representa el código de navegación de la aplicación (control de flujo). Es digamos el director de orquesta.
Estos 3 aspectos se pueden adaptar perfectamente al patrón de modelo – vista – controlador.
Patrón de diseño
El modelo – vista – controlador es un patrón de diseño de arquitectura de software, y un patrón de diseño tiene ciertas características.
- Facilitan soluciones efectivas a problemas comunes en el diseño de software, por ejm, el manejo de sesiones, el CRUD…
- Su efectividad ya ha sido comprobada. Cuando convertimos una rutina de código que da solución a algo, y que perfeccionamos, ahí es cuando se puede replicar, y se vuelve un patrón, ya que la efectividad ha sido comprobada,
- Son reusables. Los frameworks como Bootstrap, Foundation, por ejm, son patrones modelo – vista – controlador. Se pueden utilizar en cualquier proyecto.
- Facilitan el aprendizaje de los programadores inexpertos.
Historia
El modelo – vista – controlador fue aportado originalmente por el lenguaje de programación SmallTalk, en la década de los 70. Su característica principal es dividir la aplicación en 3 componentes. Se basa en la separación de responsabilidades ya que cada una de las partes se encarga de un aspecto específico y no interfiere con el de las otras, aunque sí guardan una interdependencia entre sí.
Características
1. Modelo
El modelo de datos es lo primero que tenemos que tener, el modelo representa la capa de la lógica de negocios, de la persistencia a los datos. El concepto de persistencia significa interacción trabajo con los datos. La lógica de negocio representa saber de que trata la información que vamos a automatizar en nuestro sistema.
2. Vista
La vista representa la capa de la presentación de datos. Estos datos que manipulamos, como los vamos a mostrar de manera usable en el navegador al usuario, es la capa que se encarga de la interfaz de usuario. Está relacionada con la gente que se encarga del Frontend. En la vista sólo se deben realizar operaciones simples. No tendríamos que estar usando la lógica de negocio.
3. Controlador
El controlador se encarga de controlar el flujo de la aplicación. Tiene la función de recibir y responder a los eventos (acciones del usuario). Es el encargado de redirigir o asignar la parte de la lógica de negocios a cada petición. Debe tener un mecanismo para guardar las correspondencias entre peticiones y respuestas que se les asignan. Es el gran director de orquesta de la aplicación.