MVC, Model – View – Controller

MVC es un patrón  de arquitectura de software que propone separar el código de las aplicaciones por sus diferentes responsabilidades en 3 componentes diferentes: modelo, vista y controlador, es decir, los datos, la lógica de negocio de la aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Si bien es un concepto que es previo a la web, ha ganado mucho terreno últimamente por la amplia distribución de frameworks de desarrollo que aplican dicho patrón para lograr un software de mejor calidad y mantenible.

No pretende discriminar entre capa de negocio y capa de presentación pero si pretende separar la capa visual gráfica de su correspondiente programación y acceso a datos, algo que mejora el desarrollo y mantenimiento de la Vista y el Controlador en paralelo, ya que ambos cumplen ciclos de vida muy distintos entre sí

Modelo
Es la capa que trabaja con la información, es la que sabe como acceder a los datos y como manipularlos.
Existen motores, como Hibernate,  que se encargan de persistir al modelo cuando se trabaja con Programación Orientada a Objetos. (En otro post estaremos comentando sobre POO). En este caso, el modelo conoce la comunicación con estos motores para facilitar el acceso a las bases de datos directamente y así lograr la manipulación de los datos.

Vista
Es la capa encargada de presentar al modelo. Puede acceder al Modelo pero nunca cambiar su estado. También puede ser notificada cuando hay un cambio de estado en el Modelo.

Controlador
Es el encargado de gestionar las peticiones/eventos de la vista, saber como comunicarse con el modelo para que este sea manipulado y responderle a la vista con los datos necesarios para que sea actualizada.

 

MVC es un concepto, es un patrón y como todo patrón, existen soluciones que han sido implementadas. Struts es un ejemplo de implementación de un Model-View-Controller.

En resumen, da la libertad de modificar puntualmente lo que se quiere modificar sin afectar al resto de la aplicación, mejora la performance, mantiene el código ordenado y hace más sencilla a la metología de desarrollo.