¿Qué es MVC (Model View Controller)?

Escuché el término MVC (Controlador de vista de modelo) últimamente con un montón de Buzz, pero ¿qué es realmente?

Es posible que desee echar un vistazo a lo que Martin Fowler tiene que decir sobre las architectures MVC, MVP y UI en general en el sitio de Martin Fowlers .

Me gusta este artículo de Martin Fowler. Verás que MVC en realidad está más o menos muerto, estrictamente hablando, en su dominio original de progtwigción rica en IU. La distinción entre View y Controller no se aplica a la mayoría de los toolkits de UI modernos.

El término parece haber encontrado una nueva vida en los círculos de progtwigción web recientemente. No estoy seguro si eso es realmente MVC, o simplemente reutilizando el nombre para algunas ideas estrechamente relacionadas pero sutilmente diferentes.

MVC es un patrón de diseño originalmente creado en los viejos tiempos de smalltalk.

El concepto era que un modelo representaría su estado de aplicación y lógica, y los controladores manejarían IO entre “Vistas”.

Una vista era una representación del estado en el modelo. Por ejemplo, su modelo puede ser un documento de hoja de cálculo y puede tener una vista que lo represente como una hoja de cálculo y una vista que lo represente como una tabla dinámica.

El MVC moderno ha sido contaminado con basura web MVC falsa, así que dejaré que otros respondan eso.

Como la etiqueta en su pregunta indica que es un patrón de diseño. Pero eso probablemente no te ayuda. Básicamente lo que es, es una forma de organizar su código en agrupaciones lógicas que mantienen las distintas piezas separadas y fácilmente modificables.

Simplificación: Modelo = Estructura de datos / Business Logic View = Capa de salida (es decir, código HTML) Controller = Capa de transferencia de mensajes

Entonces, cuando las personas hablan de MVC, de lo que están hablando es de dividir el código en estos grupos lógicos para mantenerlo limpio y estructurado, y con suerte, poco relacionado. Al seguir este patrón de diseño, usted debería ser capaz de crear aplicaciones que podrían hacer que View cambie completamente a otra cosa sin tener que tocar su controlador o modelo (es decir, cambiar de HTML a RSS).

Hay muchísimos tutoriales disponibles para google y estoy seguro de que aparecerán al menos uno que lo explicará en términos que hagan clic contigo.

Aquí hay una descripción ingenua de MVC: http://www.devcodenote.com/2015/04/mvc-model-view-controller.html

Un fragmento:

Definición: Es un patrón de diseño que separa una aplicación en múltiples capas de funcionalidad.

Las capas:

Modelo representa datos. Actúa como una interfaz entre la base de datos y la aplicación (como un objeto de datos). Manejará validaciones, asociaciones, transacciones, etc.

Controlador Recostack y procesa datos. Maneja el código que hace la selección de datos y los mensajes de datos.

Ver Muestra el resultado a los usuarios.

Wikipedia parece describirlo mejor hasta el momento:

http://en.wikipedia.org/wiki/Model-view-controller

Model-view-controller (MVC) es un patrón arquitectónico utilizado en ingeniería de software. El uso exitoso del patrón aísla la lógica comercial de las consideraciones de la interfaz de usuario, lo que resulta en una aplicación donde es más fácil modificar la apariencia visual de la aplicación o las reglas comerciales subyacentes sin afectar a la otra. En MVC, el modelo representa la información (los datos) de la aplicación y las reglas de negocio utilizadas para manipular los datos; la vista corresponde a elementos de la interfaz de usuario, como texto, elementos de casillas de verificación, etc. y el controlador maneja detalles que involucran la comunicación con el modelo de acciones del usuario, como pulsaciones de teclas y movimientos del mouse

El Paradigma de Interfaz de Usuario MVC o Modelo-Vista-Controlador fue descrito por primera vez por Trygve Reenskaug de Xerox PARC. Apareció por primera vez impreso en el volumen 6 de la revista Byte, número 8, en agosto de 1981.

Este es un artículo de blog de MVC sobre Oreilly que lo tiene cubierto.

MVC es un patrón de architecture de software que separa la representación de la interacción del usuario. Generalmente, el modelo consiste en datos de aplicación y funciones que interactúan con él, mientras que la vista presenta estos datos al usuario; el controlador media entre los dos.

Patrón de diseño MVC:

4 partes = Usuario, Vista, Controlador, Modelo.

Usuario: – ve la Vista y usa el Controlador.

Modelo: – contiene los datos y actualiza el Modelo que hay nuevos datos / estado.

Ver: – muestra los datos que tiene el Modelo.

Controlador: toma la solicitud del usuario para obtener o establecer información, luego se comunica con la Vista o el Modelo, resp. – se “consigue” a través de la Vista. – se “establece” a través del Modelo.

Es una forma de separar la funcionalidad subyacente de su aplicación (modelo) de la forma en que interactúa con el usuario (vista). El controlador coordina cómo el modelo y la vista se comunican entre sí.

Si bien está de moda en este momento, es importante recordar que evitar que el modelo sea capaz de determinar exactamente cómo se presentan sus datos al usuario puede verse como algo negativo. El ejemplo más obvio es con HTML. La intención original de HTML era que hubiera una clara separación del modelo (HTML) de la vista (página web renderizada) a través de un controlador (el navegador). Se ha producido una reacción tan negativa en contra de esta intención original que los navegadores son criticados si no hacen que un píxel de página sea perfecto para la vista deseada por el diseñador.

MVC es una forma de dividir un elemento de interfaz de usuario en 3 conceptos distintos. El modelo es la información sobre la cual opera la interfaz. La vista es cómo el elemento se representa visualmente (¿o quizás de forma audible?). El controlador es la lógica que opera en los datos.

Por ejemplo, si tiene algún texto que desea manipular en una UI. Una cadena simple podría representar los datos. La vista podría ser un campo de texto. El controlador es la lógica que traduce la entrada del usuario, digamos la entrada de caracteres o mouse, y realiza cambios en el modelo de datos subyacente.

Como muchos ya han dicho, MVC es un patrón de diseño. Enseño a uno de mis compañeros de trabajo y lo he explicado de esta manera:

M odelos: la capa de acceso a los datos. Esto puede ser acceso directo a datos, servicios web, etc.

V istas: la capa de presentación de su aplicación.

C ontrollers: esta es la lógica de negocios para su aplicación.

Este patrón mejora el desarrollo impulsado por pruebas.