10/08/2007

Modelo MVC, Modelo - Vista - Controlador


Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el modelo es el Sistema de Gestión de Base de Datos y el controlador representa la Lógica de la aplicación.


Mi experiencia con este modelo empezó hace 3 años mas menos, en un proyecto donde se requería un cambio estructural coordinado y de veloz desarrollo. Este modelo en si es lento (construcción) ya que solo para desplegar el famoso "Hola Mundo" se requiere de un controlador y una vista, pero lo importante es que al utilizar este modelo uno puede desarrollar aplicaciones robustas y escalables.

Existe una infinidad de frameworks MVC para PHP, los mas ocupados por la comunidad son:
Particularmente no ocupe ninguno de estos frameworks, ya que en ese entonces buscábamos uno que ya estuviera testeado y no en fase beta. Se escogió para el desarrollo del proyecto (y con el cual tengo mas experiencia) el framework Phrame, que lamentablemente no tendrá mas mantenciones, ya que el "Team PHP" dejará de dar soporte para PHP4.

Pero en sí, independiente del framework que uno elija, el modelo MVC es el mismo, puede que cambie la forma de crear las instancias de cada capa, o la forma de incorporar plantillas (templates) pero siempre mantendrá el mismo esquema de Modelo - Vista - Controlador.

Veamos con detenimiento la funcionalidad de cada capa

La imagen muestra las 3 capas fundamentales del modelo MVC. Primero se detona un controlador el cual puede o no invocar a un modelo o a una vista o viceversa.

Un ejemplo sería; Un usuario envía datos por un formulario, esta acción detona al controlador "ingresar_datos" posteriormente el controlador deriva estos datos (enviados por el formulario) al modelo "guardar_datos", luego el controlador llama a una vista la cual se encarga de mostrar un mensaje al usuario advirtiendo que los datos enviados fueron registrados.

Esta combinación puede variar en otros casos, un controlador puede llamar a un modelo y este a su vez a una vista o un controlador llama a una vista y este al modelo, personalmente sugiero que el controlador llame aun modelo, este modelo retorne algo, y que después el mismo controlador llame a una vista mostrando lo que devolvió el modelo.
  • Controlador: Este responde a eventos, usualmente acciones del usuario (agregar, modificar, eliminar, etc.) e invoca cambios en el modelo y probablemente en la vista.
  • Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos, en otras palabras es el modelo de negocios del sistema. También es en esta capa donde:
    • La aplicación se conecta con la(s) base(s) de datos
    • Ejecuta operaciones lógicas
    • transacciones entre archivos
  • Vista: Esta capa presenta el modelo (datos) en un formato adecuado para interactuar, mas bien conocida como la capa de presentación o la interfaz del usuario.

No hay comentarios.: