Vous êtes sur la page 1sur 10

Modelo Vista Controlador

De Wikipedia, la enciclopedia libre


Saltar a navegacin, bsqueda

Un diagrama sencillo que muestra la relacin entre el modelo, la vista y el controlador.


Nota: las lneas slidas indican una asociacin directa, y las punteadas una indirecta
(por ejemplo, patrn Observer).
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 en aplicaciones 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
el controlador es el responsable de recibir los eventos de entrada desde la vista.

Contenido
[ocultar]
1 Historia
2 Descripcin del patrn
3 Frameworks MVC

4 Referencias

Historia [editar]
El patrn fue descrito por primera vez en 19791 por Trygve Reenskaug, entonces
trabajando en Smalltalk en laboratorios de investigacin de Xerox. La implementacin
original est descrita a fondo en Programacin de Aplicaciones en Smalltalk-80(TM):
Como utilizar Modelo Vista Controlador.2

Descripcin del patrn [editar]

Modelo: Esta es la representacin especfica de la informacin con la cual el


sistema opera. La lgica de datos asegura la integridad de estos y permite derivar
nuevos datos; por ejemplo, no permitiendo comparar un nmero de unidades
negativo, calculando si hoy es el cumpleaos 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 informticos utilizan un Sistema de Gestin de Base de Datos para


gestionar los datos: en MVC 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 Vista y su correspondiente Controlador de eventos y
acceso a datos, MVC no pretende discriminar entre capa de negocio de 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 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 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 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 patrn de observador puede
ser utilizado 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. 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.
5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el
ciclo nuevamente.

Frameworks MVC [editar]


Lenguaje

Licencia

Nombre

Ruby

MIT

Ruby on Rails

Java /
J2ee

Apache

Struts

Java /
J2ee

Apache

Beehive

Java /
J2ee

Apache

Spring

Java /
J2ee

Apache

Tapestry

Java /
J2ee

Apache

Aurora

Java /
J2ee

Apache

JavaServerFaces

Perl

GPL

Catalyst

Perl

GPL

CGI::Application

Perl

GPL

Gantry Framework

Perl

GPL

Jifty

Perl

GPL

Maypole

Perl

GPL

OpenInteract2

Perl

Comercial

PageKit

Perl

GPL

Cyclone 3

Perl

ECL

Solstice

Perl

GPL

CGI::Builder

PHP

GPL

Self Framework

PHP

LGPL

Tlalokes

PHP

LGPL

Agavi

PHP

BSD

Zend Framework

PHP

MIT

CakePHP

PHP

GNU/GPL

Kumbia

PHP

MIT

Symfony

PHP

MIT

QCodo

PHP

GNU/GPL

CodeIgniter

PHP

Otra

Kohana

PHP

MPL 1.1

PHP4ECore

PHP

BSD

PRADO

Python

ZPL

Zope3

Python

Varias

Turbogears

Python

GPL

Web2py

Python

BSD

Django

.NET

Castle Project

MonoRail

.NET

Apache

Spring .NET

.NET

Apache

Maverick .NET

.NET

MS-PL

ASP.NET MVC

.NET

Microsoft Patterns &


Practices

User Interface Process (UIP) Application


Block

AS3

Adobe Open Source

Cairngorm

Referencias [editar]
1. Trygve/MVC.
2. How to use Model-View-Controller (MVC)
Obtenido de "http://es.wikipedia.org/wiki/Modelo_Vista_Controlador"
Categoras: Patrones de diseo | Arquitectura de software
Vistas

Artculo
Discusin
Editar
Historial

Herramientas personales

Probar Beta

Registrarse/Entrar

Buscar
Ir

Buscar

Navegacin

Portada
Portal de la comunidad
Actualidad
Cambios recientes
Pgina aleatoria
Ayuda
Donaciones

Imprimir/exportar

Crear un libro
Descargar como PDF
Versin para imprimir

Herramientas

Lo que enlaza aqu


Cambios en enlazadas
Subir archivo
Pginas especiales
Enlace permanente
Citar este artculo

En otros idiomas

Catal
esky
Deutsch
English
Esperanto

Suomi
Franais

Magyar
Italiano

Latvieu
Nederlands
Norsk (bokml)
Polski
Portugus
Romn

Svenska

Trke

Ting Vit

Esta pgina fue modificada por ltima vez el 03:59, 20 oct 2009.
El texto

Nuevo

Patrn "Modelo-Vista-Controlador"

Descripcin
Para el diseo de aplicaciones con sofisticados interfaces se utiliza el patrn de diseo ModeloVista-Controlador. La lgica de un interfaz de usuario cambia con ms frecuencia que los
almacenes de datos y la lgica de negocio. Si realizamos un diseo 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 ms riesgo de error.
Se trata de realizar un diseo 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
lgica de negocio o de datos.
Elementos del patrn:

Modelo: datos y reglas de negocio


Vista: muestra la informacin del modelo al usuario
Controlador: gestiona las entradas del usuario

Un modelo puede tener diversas vistas, cada una con su correspondiente controlador. Un
ejemplo clsico es el de la informacin 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:
o Acceder a la capa de almacenamiento de datos. Lo ideal es que el modelo sea
independiente del sistema de almacenamiento.
o 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".
o Lleva un registro de las vistas y controladores del sistema.
o 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).

2. El controlador es responsable de:


o Recibe los eventos de entrada (un clic, un cambio en un campo de texto, etc.).
o 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 )".

3. Las vistas son responsables de:


o Recibir datos del modelo y los muestra al usuario.
o Tienen un registro de su controlador asociado (normalmente porque adems lo
instancia).
o 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).
Un ejemplo de MVC con un modelo pasivo (aquel que no notifica cambios en los datos) es la
navegacin 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 peticin al Modelo (aunque tambin
puede llamar directamente a la vista).
3. El modelo (si es necesario) llama a la vista para su actualizacin.
4. Para cumplir con la actualizacin la Vista puede solicitar datos al Modelo.
5. El Controlador recibe el control.
Bien, pero esto cmo se implementa? Existe una pequea 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 patrn. En el siguiente ejemplo en Java, el
objeto vista es un Applet AWT. El controlador (controlador.java) puede gestionar el clic en un
botn, de tal forma que recoge datos por medio del Modelo (model.cargar_texto(..)) y los
manda a la Vista (el applet) para su actualizacin (vista.mostrar_texto( )):

**

/**************************************************************
Responde al click en botn "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 de

completada.");

" + path + "

}
else
vista.mostrar_aviso("Error en la carga de " +
path);

Volver al ndice

Vous aimerez peut-être aussi