El usuario interactúa con la Vista , pero la Vista debe comunicar las acciones al Controlador . El controlador puede actualizar el modelo , pero no se requiere con cada / cualquier cambio.
La descripción que proporciono se basa en mi experiencia personal con la implementación .NET de MVC. Su implementación puede ser diferente.
El controlador es donde se procesan las acciones, básicamente una capa empresarial. Un controlador simple no hará más que obtener los datos del Modelo para alimentar a la Vista. Un controlador complicado realizará todo tipo de acciones, hasta la gestión de seguridad, autenticación, autorización, registro y posiblemente muchas otras cosas.
La Vista solo debe ser responsable de mostrar la información de una manera que el usuario pueda entender. Puede haber algún cruce aquí tanto con el Controlador como con el Modelo, ya que cosas como las Aplicaciones de Página Única (SPA) tendrán comentarios de validación de datos para el usuario. Cualquier otro cruce está muy mal visto.
El modelo trata con datos. Esto incluye la validación de datos (cuando corresponda). El almacenamiento y la recuperación de datos también se manejan en esta capa.
ACTUALIZAR
Parece haber cierta confusión sobre quién hace qué y cuándo. Incluí dos vistas generales diferentes de las arquitecturas MVC porque son similares, pero no iguales. Hay espacio para cualquier interpretación. Posiblemente, muchos más. Las descripciones anteriores son mi interpretación de MVC de múltiples fuentes, incluida mi propia experiencia en la creación de aplicaciones utilizando esta metodología. Con suerte, esta actualización ayudará a aclarar algo de esta confusión.
MVC es un intento de construir un patrón de diseño de Separación de preocupaciones para el desarrollo de software. Se ha implementado principalmente en aplicaciones basadas en web (que yo sepa).
La Vista maneja toda la interacción del usuario. Si su usuario hace clic en un botón, la Vista determina si el clic es una interacción de la interfaz de usuario o algo que está más allá de su interés (una interacción del Controlador). Si el botón hace algo como copiar valores de un campo a otro, su implementación determinará si eso es un problema de Vista o un problema de Controlador. Lo más probable es que solo tenga esta confusión de preocupaciones cuando trabaje con una Aplicación de página única (SPA).
El controlador es donde se procesan sus acciones. La Vista ha comunicado que el usuario decidió cambiar los valores de algunos campos. El Controlador puede realizar la validación de esos datos o puede ser manejado por el Modelo. Nuevamente, esto depende de la implementación. Si el controlador tiene características de seguridad, puede determinar que el usuario no tiene suficientes privilegios para realizar la acción. Rechazaría los cambios y actualizaría la Vista en consecuencia. El Controlador también determina qué datos recuperar del Modelo, cómo empaquetarlos y actualizar la Vista con esos datos.
El modelo determina cómo y dónde almacenar los datos. También puede realizar la validación de esos datos antes de almacenarlos (debería hacerlo porque las personas omitirán la Vista en ocasiones).
Wikipedia tiene un artículo sobre MVC .
- Un modelo notifica su vista / vistas y controladores asociados cuando ha habido un cambio en su estado. Esta notificación permite que las vistas actualicen su presentación y que los controladores cambien el conjunto de comandos disponibles. En algunos casos, una implementación de MVC podría ser "pasiva", de modo que otros componentes deben sondear el modelo en busca de actualizaciones en lugar de recibir una notificación.
- El controlador le dice a una vista toda la información que necesita para generar una representación de salida para el usuario. También puede proporcionar mecanismos genéricos para informar al controlador de la entrada del usuario.
- Un controlador puede enviar comandos al modelo para actualizar el estado del modelo (por ejemplo, editar un documento). También puede enviar comandos a su vista asociada para cambiar la presentación de la vista del modelo (por ejemplo, desplazándose por un documento).
Del resumen de Microsoft de MVC .
Modelos. Los objetos modelo son las partes de la aplicación que implementan la lógica para el dominio de datos de la aplicación. A menudo, los objetos modelo recuperan y almacenan el estado del modelo en una base de datos. Por ejemplo, un objeto Producto puede recuperar información de una base de datos, operar en ella y luego escribir información actualizada en una tabla de Productos en una base de datos de SQL Server.
En aplicaciones pequeñas, el modelo es a menudo una separación conceptual en lugar de física. Por ejemplo, si la aplicación solo lee un conjunto de datos y lo envía a la vista, la aplicación no tiene una capa de modelo físico y clases asociadas. En ese caso, el conjunto de datos asume el papel de un objeto modelo.
Puntos de vista. Las vistas son los componentes que muestran la interfaz de usuario (IU) de la aplicación. Por lo general, esta IU se crea a partir de los datos del modelo. Un ejemplo sería una vista de edición de una tabla de Productos que muestra cuadros de texto, listas desplegables y casillas de verificación basadas en el estado actual de un objeto Producto.
Controladores. Los controladores son los componentes que manejan la interacción del usuario, trabajan con el modelo y, en última instancia, seleccionan una vista para representar que muestra la IU. En una aplicación MVC, la vista solo muestra información; el controlador maneja y responde a la entrada e interacción del usuario. Por ejemplo, el controlador maneja valores de cadena de consulta y pasa estos valores al modelo, que a su vez podría usar estos valores para consultar la base de datos.