2008-09-24 24 views
21

He escuchado hablar del término MVC (Controlador de vista de modelo) últimamente con un montón de Buzz, pero ¿qué es realmente?¿Qué es MVC (Controlador de vista de modelo)?

+1

Voy a cerrar esta pregunta como fuera de tema porque es una pregunta abstracta/teórica sobre programación, que es más del dominio de Programmers.SE que Stack Overflow, pero incluso allí se considera demasiado amplio: [el equivalente pregunta en su sitio] (http://programmers.stackexchange.com/questions/127624/what-is-mvc-really) se ha cerrado, aunque los lectores todavía pueden encontrar las respuestas útiles. –

Respuesta

21

Es posible que desee echar un vistazo a lo que Martin Fowler tiene que decir acerca de las arquitecturas MVC, MVP y UI en general en Martin Fowlers site.

1

Wikipedia parece describir lo mejor hasta el momento:

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

Modelo-Vista-Controlador (MVC) es un patrón arquitectónico usado 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 el aspecto visual de la aplicación o las reglas comerciales subyacentes sin afectar al otro. 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

0

Este artículo del blog What is MVC de Oreilly lo tiene cubierto.

+0

¿cuál es la diferencia entre lógica de aplicación y lógica de negocios? porque en este artículo dice que el modelo contiene lógica comercial y el controlador contiene lógica de aplicación. Estoy confundido con eso. –

+0

Creo que el artículo trata de establecer una distinción entre el código que está directamente relacionado con el (los) problema (s) que está resolviendo (es el código en los modelos, por ejemplo, calculando el total de una factura) y el código responsable de dirigir las solicitudes y pasando información (es el código en los controladores - manejo de formatos get/post y de respuesta, etc.). No creo que llamarlos lógica de negocios y aplicaciones sea la mejor elección de palabras. – ctcherry

5

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.

La MVC moderna ha sido contaminada con basura web MVC falsa, por lo que voy a dejar que otros respondan eso.

+5

Hace la afirmación "Modern MVC se ha contaminado con basura web MVC falsa" y luego evita abordarla, difiriendo a "otros" que responderán a eso. ¿Por qué te sientes de esta manera y por qué no * tú * dilucidar por nosotros? –

+0

Acepté a los demás porque sabía que en 10 minutos habría 8 respuestas que equiparan MVC a Rails :) – FlySwat

+0

Ah, ya veo ... ¿Estás diciendo que Rails * no es realmente MVC? No sé mucho sobre Rails, así que no puedo abordarlo yo mismo ... –

-2

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 desee manipular en una IU. 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.

+1

Esto es falso Web MVC ... En MVC real, el controlador es simplemente el puente IO, y el modelo hace toda la manipulación de datos. – FlySwat

9

Me gusta this article por Martin Fowler. Verás que MVC en realidad está más o menos muerto, estrictamente hablando, en su dominio original de una rica programación de 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 programación web recientemente. No estoy seguro si eso es realmente MVC, o simplemente reutilizando el nombre para algunas ideas estrechamente relacionadas pero sutilmente diferentes.

2

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 Ver = Capa de salida (i.e código HTML) Controlador = Capa de transferencia de mensajes

Así que cuando las personas hablan de MVC, de lo que están hablando está dividiendo el código en estos grupos lógicos para mantenerlo limpio y estructurado, y con suerte acoplado de manera flexible. Al seguir este patrón de diseño, 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 miles de toneladas de tutoriales disponibles allí solo para google y estoy seguro de que aparecerán al menos uno que lo explicará en términos que hagan clic con usted.

-2

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

M odels - La capa de acceso a datos. Esto puede ser acceso directo a datos, servicios web, etc.

V iews - La capa de presentación de su aplicación.

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

Este patrón mejora el desarrollo basado en pruebas.

-1

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.

1

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.

+0

Xerox PARC también inventó smalltalk, y MVC fue un concepto fundamental de la misma. – FlySwat

+0

Aquí está el artículo de Reenskaug ... http://folk.uio.no/trygver/2003/javazone-jaoo/MVC_pattern.pdf – dacracot

0

MVC es un patrón de arquitectura 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.

0

diseño MVC patrón:

4 piezas = usuario, Vista, Controlador, Modelo.

Usuario: - ve la Vista y utiliza 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 configurar información, luego se comunica con la Vista o Modelo, resp. - "obtiene" a través de la Vista. - "establece" a través del Modelo.

2

Aquí es 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 de datos representa. 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 Recopila y procesa los datos. Maneja el código que hace la selección de datos y los mensajes de datos.

Ver Muestra la salida a los usuarios.

Cuestiones relacionadas