Anda di halaman 1dari 6

Historia

El patrn MVC fue una de las primeras ideas en el campo de las interfaces grficas de usuario y uno de los primeros trabajos en describir e implementar aplicaciones software en trminos de sus diferentes funciones5 . MVC fue introducido por Trygve Reenskaug (web personal) en Smalltalk-76 durante su visita a Xerox Parc6 7 en los aos 70 y, seguidamente, en los aos 80, Jim Althoff y otros implementaron una versin de MVC para la biblioteca de clases de Smalltalk-808 . Slo ms tarde, en 1988, MVC se expres como un concepto general en un artculo9 sobre Smalltalk-80. En esta primera definicin de MVC el controlador se defina como "el mdulo que se ocupa de la entrada" (de forma similar a como la vista "se ocupa de la salida"). Esta definicin no tiene cabida en las aplicaciones modernas en las que esta funcionalidad es asumida por una combinacin de la 'vista' y algn framework moderno para desarrollo. El 'controlador', en las aplicaciones modernas de la dcada de 2000, es un mdulo o una seccin intermedia de cdigo, que hace de intermediario de la comunicacin entre el 'modelo' y la 'vista', y unifica la validacin (utilizando llamadas directas o el "observer" para desacoplar el 'modelo' de la 'vista' en el 'modelo' activo10 ). Algunos aspectos del patrn MVC han evolucionado dando lugar a ciertas variantes del concepto original, ya que "'las partes del MVC clsico realmente no tienen sentido para los clientes actuales"11 :

HMVC (MVC Jerrquico) MVA (Modelo-Vista-Adaptador) MVP (Modelo-Vista-Presentador) MVVM (Modelo-Vista Vista-Modelo) ... y otros que han adaptado MVC a diferentes contextos.

Qu es y en donde se utiliza ms frecuentemente el Modelo Vista Controlador?


Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que separa los datos de una aplicacin, la interfaz de usuario, y la lgica de control en tres componentes distintos. El patrn MVC se ve frecuentemente enaplicaciones web, donde la vista es la pgina HTML y el cdigo que provee de datos dinmicos a la pgina, el modelo es el Sistema de Gestin de Base de Datos y la Lgica de negocio y elcontrolador es el responsable de recibir loseventos de entrada desde la vista.

Cul es la finalidad del Modelo Vista Controlador?


La finalidad del modelo es mejorar la reusabilidad por medio del desacople entre la vista y el modelo. Los elementos del patrn son los siguientes: El modelo es el responsable de: 1. Acceder a la capa de almacenamiento de datos. Lo ideal es que el modelo sea independiente del sistema de almacenamiento. 2. Define las reglas de negocio (la funcionalidad del sistema). Un ejemplo de regla puede ser: Si la mercanca pedida no est en el almacn, consultar el tiempo de entrega estndar del proveedor. 3. Lleva un registro de las vistas y controladores del sistema. 4. Si estamos ante un modelo activo, notificar a las vistas los cambios que en los datos pueda producir un agente externo (por ejemplo, un fichero bath que actualiza los datos, un temporizador que desencadena una insercin, etc). El controlador es el responsable de: 1. Recibe los eventos de entrada (un clic, un cambio en un campo de texto, etc.). 2. Contiene reglas de gestin de eventos, del tipo SI Evento Z, entonces Accin W. Estas acciones pueden suponer peticiones al modelo o a las vistas. Una de estas peticiones a las vistas puede ser una llamada al mtodo Actualizar(). Una peticin al modelo puede ser Obtener_tiempo_de_entrega( nueva_orden_de_venta ). Las vistas son responsables de: 1. Recibir datos del modelo y los muestra al usuario. 2. Tienen un registro de su controlador asociado (normalmente porque adems lo instancia). 3. Pueden dar el servicio de Actualizacin(), para que sea invocado por el controlador o por el modelo (cuando es un modelo activo que informa de los cambios en los datos producidos por otros agentes).

Qu Ventajas trae utilizar el MVC?


1. Es posible tener diferentes vistas para un mismo modelo (ej. representacin de un conjunto de datos como una tabla o como un diagrama de barras). 2. Es posible construir nuevas vistas sin necesidad de modificar el modelo subyacente. 3. Proporciona un mecanismo de configuracin a componentes complejos muchos ms tratable que el puramente basado en eventos (el modelo puede verse como una representacin estructurada del estado de la interaccin).

Cules son los orgenes del Modelo Vista Controlador?


Basado en informacin histrica, puede decirse que este fue descrito por primera vez en 1979 por Trygve Reenskaug, trabajador de Smalltalk, en unos laboratorios de gran investigacin de Xerox.

Flujo que sigue el control en una implementacin general de un MVC Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:

1. El usuario interacta con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botn, enlace) 2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificacin de la accin solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a travs de un gestor de eventos (handler) o callback. 3. El controlador accede al modelo, actualizndolo, posiblemente modificndolo de forma adecuada a la accin solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos estn a menudo estructurados usando un patrn de comando que encapsula las acciones y simplifica su extensin. 4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra 5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

Descripcin de patrones
De manera genrica, los componentes de MVC se podran definir como sigue:

El Modelo: Es la representacin de la informacin con la cual el sistema opera, por lo tanto gestiona todos los accesos a dicha informacin, tanto consultas como actualizaciones, implementando tambin los privilegios de acceso que se hayan descrito en las especificaciones de la aplicacin (lgica de negocio). Enva a la 'vista' aquella parte de la informacin que en cada momento se le solicita para que sea mostrada (tpicamente a un usuario). Las peticiones de acceso o manipulacin de informacin llegan al 'modelo' a travs del 'controlador'12 . El Controlador: Responde a eventos (usualmente acciones del usuario) e invoca peticiones al 'modelo' cuando se hace alguna solicitud sobre la informacin (por ejemplo, editar un documento o un registro en una base de datos). Tambin puede enviar comandos a su 'vista' asociada si se solicita un cambio en la forma en que se presenta de 'modelo' (por ejemplo, desplazamiento o scroll por un documento o por los diferentes registros de una base de datos), por tanto se podra decir que el 'controlador' hace de intermediario entre la 'vista' y el 'modelo' (vase Middleware). La Vista: Presenta el 'modelo' (informacin y lgica de negocio) en un formato adecuado para interactuar (usualmente la interfaz de usuario) por tanto requiere de dicho 'modelo' la informacin que debe representar como salida.

Interaccin de los componentes


Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo de control que se sigue generalmente es el siguiente: 1. El usuario interacta con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botn, enlace, etc.) 2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificacin de la accin solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a travs de un gestor de eventos (handler) o callback. 3. El controlador accede al modelo, actualizndolo, posiblemente modificndolo de forma adecuada a la accin solicitada por el usuario (por

ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos estn a menudo estructurados usando un patrn de comando que encapsula las acciones y simplifica su extensin. 4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se reflejan los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, se podra utilizar el patrn Observador para proveer cierta indireccin entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun as el modelo en s mismo sigue sin saber nada de la vista. Este uso del patrn Observador no es posible en las aplicaciones Web puesto que las clases de la vista estn desconectadas del modelo y del controlador. En general el controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador enve los datos del modelo a la vista. Por ejemplo en el MVC usado por Apple en su framework Cocoa. Suele citarse como Modelo-Interface-Control, una variacin del MVC ms puro 5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

MVC y bases de datos


Muchos sistemas informticos utilizan un Sistema de Gestin de Base de Datos para gestionar los datos que debe utilizar la aplicacin; en lneas generales del MVCdicha gestin corresponde al modelo. La unin entre capa de presentacin y capa de negocio conocido en el paradigma de la Programacin por capas representara la integracin entre la Vista y su correspondiente Controlador de eventos y acceso a datos, MVC no pretende discriminar entre capa de negocio y capa de presentacin pero si pretende separar la capa visual grfica de su correspondiente programacin y acceso a datos, algo que mejora el desarrollo y mantenimiento de la Vista y elControlador en paralelo, ya que ambos cumplen ciclos de vida muy distintos entre s.

Uso en aplicaciones web


Aunque originalmente MVC fue desarrollado para aplicaciones de escritorio, ha sido ampliamente adaptado como arquitectura para disear e implementar aplicaciones web en los principales lenguajes de programacin. Se han desarrollado multitud de frameworks, comerciales y no comerciales, que implementan este patrn (ver apartado siguiente " Frameworks MVC"); estos frameworks se diferencian bsicamente en la interpretacin de como las funciones MVC se dividen entre cliente y servidor13 . Los primeros frameworks MVC para desarrollo web planteaban un enfoque de cliente ligero en el que casi todas las funciones, tanto de la vista, el modelo y el controlador recaan en el servidor. En este enfoque, el cliente manda la peticin de cualquier hiperenlace o formulario al controlador y despus recibe de la vista una pgina completa y actualizada (u otro documento); tanto el modelo como el controlador (y buena parte de la vista) estn completamente alojados en el servidor. Como las tecnologas web han madurado, ahora existen frameworks como JavaScriptMVC, Backbone o jQuery14 que permiten que ciertos componentes MVC se ejecuten parcial o totalmente en el cliente (vase AJAX).

Anda mungkin juga menyukai