MBC (MODELO VISTA CONTROLADOR) Descripción Para el diseño de aplicaciones con sofisticados interfaces se utiliza el patrón de diseño ModeloVista-Controlador. La lógica de un interfaz de usuario cambia con más frecuencia que los almacenes de datos y la lógica de negocio. Si realizamos un diseño ofuscado, es decir, un pastiche que mezcle los componentes de interfaz y de negocio, entonces la consecuencia será que, cuando necesitemos cambiar el interfaz, tendremos que modificar trabajosamente los componentes de negocio. Mayor trabajo y más riesgo de error. Se trata de realizar un diseño que desacople la vista del modelo, con la finalidad de mejorar la reusabilidad. De esta forma las modificaciones en las vistas impactan en menor medida en la lógica de negocio o de datos. Elementos del patrón: •
Modelo: datos y reglas de negocio
•
Vista: muestra la información del modelo al usuario
•
Controlador: gestiona las entradas del usuario
Un modelo puede tener diversas vistas, cada una con su correspondiente controlador. Un ejemplo clásico es el de la información de una base de datos, que se puede presentar de diversas formas: diagrama de tarta, de barras, tabular, etc. Veamos cada componente:
1. El modelo es el responsable de: ○
Acceder a la capa de almacenamiento de datos. Lo ideal es que el modelo sea independiente del sistema de almacenamiento.
○
Define las reglas de negocio (la funcionalidad del sistema). Un ejemplo de regla puede ser: "Si la mercancía pedida no está en el almacén, consultar el tiempo de entrega estándar del proveedor".
○
Lleva un registro de las vistas y controladores del sistema.
○
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 inserción, etc).
2. El controlador es responsable de: ○
Recibe los eventos de entrada (un clic, un cambio en un campo de texto, etc.).
○
Contiene reglas de gestión de eventos, del tipo "SI Evento Z, entonces Acción W". Estas acciones pueden suponer peticiones al modelo o a las vistas. Una de estas peticiones a las vistas puede ser una llamada al método "Actualizar()". Una petición al modelo puede ser "Obtener_tiempo_de_entrega( nueva_orden_de_venta )".
3. Las vistas son responsables de: ○
Recibir datos del modelo y los muestra al usuario.
○
Tienen un registro de su controlador asociado (normalmente porque además lo instancia).
○
Pueden dar el servicio de "Actualización()", 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).
Un ejemplo de MVC con un modelo pasivo (aquel que no notifica cambios en los datos) es la navegación web, que responde a las entradas del usuario, pero no detecta los cambios en datos del servidor. El diagrama de secuencia:
Pasos: 1. El usuario introduce el evento. 2. El Controlador recibe el evento y lo traduce en una petición al Modelo (aunque también puede llamar directamente a la vista). 3. El modelo (si es necesario) llama a la vista para su actualización. 4. Para cumplir con la actualización la Vista puede solicitar datos al Modelo. 5. El Controlador recibe el control. Bien, pero esto ¿cómo se implementa? Existe una pequeña dificultad: la mayor parte de las herramientas de desarrollo incorporan en las clases de la vista gran parte o todo el procesamiento de eventos. Con lo que el controlador queda semioculto dentro de la vista. A pesar de ello, podemos acercarnos bastante al patrón. En el siguiente ejemplo en Java, el objeto vista es un Applet AWT. El controlador (controlador.java) puede gestionar el clic en un botón, de tal forma que recoge datos por medio del Modelo (model.cargar_texto(..)) y los manda a la Vista (el applet) para su actualización (vista.mostrar_texto( )):
/**************************************************************** Responde al click en botón "abrir" La respuesta al evento es hacer que se abra en la vista el archivo correspondiente a la referencia seleccionada en el combo box ****************************************************************/
void b_abrir_actionPerformed(ActionEvent e) {
... String texto_archivo = model.cargar_texto( indice_ref); // Obtener texto de archivo
/*** Si la carga de archivo es ok, lo muestro. Si no, aviso de error ****/ if (texto_archivo != null) { vista.mostrar_texto(texto_archivo);
//
Mostrar texto vista.mostrar_aviso("Carga
completada.");
de
"
+
path
+
"
} else vista.mostrar_aviso("Error en la carga de " + path);
}
http://www.proactiva-calidad.com/java/patrones/mvc.html
El patrón de diseño Modelo Vista Controlador o MVC describe una forma, muy utilizada en el Web, de organizar el código de una aplicación separando los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. Modelo - Componente encargado del acceso a datos. Vista - Define la interfaz de usuario, HTML+CSS... enviados en el navegador Controlador - Responde a eventos y modifica la vista y el modelo
La principal ventaja de esta separación reside en la facilidad para realizar cambios en la aplicación puesto que: 1 Cuando realizamos un cambio de bases de datos, programación o interfaz de usuario solo tocaremos uno de los componentes 2 Podemos modificar uno de los componentes sin conocer cómo funcionan los otros
http://www.programacionweb.net/articulos/articulo/?num=505#¿Cómo%20s eguir%20este%20modelo?
Los orígenes del modelo vista controlador Fundamentos básicos del MVC •
Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no permitiendo comprar un número de unidades negativo,
calculando si hoy es el cumpleaños del usuario o los totales, impuestos o importes en un carrito de la compra.
•
Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
•
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.
Los orígenes del MVC EL Modelo Vista Controlador fue descrito por primera vez en 1979 por Trygve Reenskaug, trabajador de Smalltalk en laboratorios de investigación de Xerox. La implementación del modelo fue descrita en este documento.
Diagrama de Flujo de un framework MVC
1. El index.php inicializa el nucleo de la aplicación. 2. El enrutador examina la petición HTTP y determina que se debe de hacer. 3. Si existe la cache devuelve el archivo HTML sin pasar por el sistema , ahorrandos la carga que ello conlleva.
4. Seguridad, antes de que se cargue el controlador se filtra los datos enviados para que estos sean fiables.
5. El controlador carga el modelo, librerias, plugins, helpers y todos los recursos necesarios para satisfacer la petición.
6. Una vez la Vista está renderizada es enviada al navegador si la cache está habilitada se almacena el resultado en cache para la próxima vez que esta URL sea servida.
http://www.tufuncion.com/mvc
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario , y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web , donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio , y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Un diagrama sencillo que muestra la relación entre el modelo, la vista y el controlador. Nota: las líneas sólidas indican una asociación directa, y las punteadas una indirecta
Historia
El patrón fue descrito por primera vez en 1979 [1] por Trygve Reenskaug , entonces trabajando en Smalltalk en laboratorios de investigación de Xerox . La implementación original está descrita a fondo en Programación de Aplicaciones en Smalltalk-80(TM): Como utilizar Modelo Vista Controlador. [2] 1950-2009 Buscar otras fechas 1.
2.
1979
1979 - Aunque el modelo vista controlador data de 1979, la evolución sufrida por los desarrolladores durante el trascurso de los años ha llevado a que se hayan ido generando diferentes frameworks de desarrollo que se adecuen a la tecnología del momento. Así en la actualidad ...
Mostrar más
De La botica de Hortaleza: Arquitecturas Web vs MVC - Páginas web relacionadas fernando-cabrera.blogspot.com/2008/07/arquitecturas-web-vs-mvc.html
1982
1982 - Investigación independiente llevada adelante por Daniel Ceillan para recolectar información de los hechos históricos sucedidos durante el conflicto de Malvinas en el año 1982. Su objetivo es coleccionar y difundir información que permita tener la más realista visión ...
Mostrar más
De HeLADo ..: I + D :.. Software Libre para la... - Páginas web relacionadas proyectohelado.com.ar/?seccion=desarrollo
2000
6 Feb 2000 - Los controladores no despegan la vista de la pantalla porque, en su turno, de haber congestión en el espacio deberán ocuparse de hasta 40 naves. ... También, si un inmigrante ilegal desafía la historia argentina: por ejemplo, cuando el inspector quiso comprobar cuán residente era un ... De Ezeiza paso a paso - Páginas web relacionadas www.lanacion.com.ar/nota.asp?nota_id=211415
2002
10 Dic 2002 - ... ... e hizo un par de comentarios que me llevaron a escribir esto: Modelo-Vista-Controlador con PHP, o "cómo hacer código PHP decente sin romperse el coco"». ... De todas formas nunca me habia planteado los parelismos entre ambos modelos y me ha parecido interesante tu planteamiento. ... De Modelo-vista-controlador en PHP - Páginas web relacionadas barrapunto.com/article.pl?sid=02/12/10/1649214
2004
Jul 2004 - Apareció en julio de 2004 de la mano de David Heinemeier [3] a partir de su trabajo en Basecamp[4], una herramienta de gestión de proyectos on-line creada por 37Signals [5].
Mostrar más
De iMàtica España y Latinoamérica: January 2008... - Páginas web relacionadas www.imatica.org/bloges/2008/01/
2005
Jul 2005 - Fue desarrollado en origen para gestionar varias páginas orientadas a noticias de la World Company de Lawrence, Kansas, y fue liberada al público bajo una licencia BSD en julio de 2005.
Mostrar más
De Django - Wikipedia, la enciclopedia libre - Páginas web relacionadas es.wikipedia.org/wiki/Django
2006
21 Feb 2006 - Uno de los patrones más conocidos en el desarrollo web es el patrón MVC (Modelo Vista Controlador). Este patrón nos permite/obliga a separar la lógica de control (sabe que cosas hay que hacer pero no como), la lógica de negocio (sabe como se hacen las cosas) y la lógica de presentación ... De JSF - Java Server Faces - Páginas web relacionadas www.desarrolloweb.com/articulos/2380.php
2007
15 May 2007 - Todo gracias a una revolución, encabezada por AJAX (Asynchronous JavaScript And XML), seguida luego por Flex, la tecnología desarrollada por Macromedia, y lenguajes de programación basados en la arquitectura Modelo Vista Controlador (MVC) como Ruby on Rails. ... De ¿Es peligrosa la Web 2.0? - Páginas web relacionadas www.neoteo.com/es-peligrosa-la-web-2-0.neo
2008
29 Feb 2008 - de Ciencias Computacionales, Centro Nacional de Investigación y Desarrollo Tecnológico, Cuernavaca, Mor., 29 de febrero de 2008 Director de tesis: Dr. René Santaolaya Salgado , Codirector de tesis: MC Olivia Graciela Fragoso Díaz. De Investigación-Departamento de Ciencias Computacion... - Páginas web relacionadas www.cenidet.edu.mx/subaca/web-dcc/investigaciondcc.html
2009
8 May 2009 - ... ... una empresa de profesionales de la ingeniería del software, que plantea crear un entorno de trabajo para los programadores de tal forma que les permita de una forma ágil y casi automática la generación del código de cualquier proyecto orientado al Modelo Vista Controlador. De Ayudas de 625.000 euros para desarrollar proyectos... - Páginas web relacionadas www.adn.es/local/sevilla/20090508/NWS-0894-Ayudas-desarrollar-sevillanas-proyectosempresas.html
http://www.google.com.co/archivesearch?hl=es&rlz=1W1GFRE_es&q=HISTO RIA+DEL+modelo+vist+controlador&um=1&ie=UTF8&scoring=t&ei=UNxpSqSBFImwtgfT_u3CCw&sa=X&oi=timeline_result&ct= title&resnum=11
Descripción del patrón •
Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no permitiendo comparar un número de unidades negativo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o importes en un carrito de la compra.
•
Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario .
•
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.
Muchos sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para gestionar los datos: en MVC corresponde al modelo. La unión entre capa de presentación y capa de negocio conocido en el paradigma de la Programación por capas representaría la integración entre Vista y su correspondiente Controlador de eventos y acceso a datos, MVC no pretende discriminar entre capa de negocio de 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 si. Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente: 1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace, etc.) 2. El controlador recibe (por parte de los objetos de la interfaz -vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback. 3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión. 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). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, el patrón de observador puede ser utilizado para proveer cierta indirección 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. 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 envíe los datos del modelo a la vista. 5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.