Está en la página 1de 6

TEMA

N2 MODELO-VISTA-CONTROLADOR TALLER I- INFORMATICA 2016

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 funciones. MVC fue introducido por Trygve
Reenskaug en Smalltalk-76 durante su visita a Xerox Parc 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-80. Solo ms tarde, en 1988, MVC se expres como un concepto
general en un artculo sobre Smalltalk-80. En esta primera definicin de MVC
el controlador se defina como el mdulo que se ocupa de la entrada. 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.

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)

Que es MVC?

En lneas generales, MVC es una propuesta de diseo de software utilizada para


implementar sistemas donde se requiere el uso de interfaces de usuario. Surge de la
necesidad de crear software ms robusto con un ciclo de vida ms adecuado, donde se
potencie la facilidad de mantenimiento, reutilizacin del cdigo y la separacin de
conceptos.

1
TEMA N2 MODELO-VISTA-CONTROLADOR TALLER I- INFORMATICA 2016

Su fundamento es la separacin del cdigo en tres capas diferentes, acotadas por su


responsabilidad, en lo que se llaman Modelos, Vistas y Controladores, o lo que es lo
mismo, Model, Views & Controllers, si lo prefieres en ingls. En este artculo estudiaremos
con detalle estos conceptos, as como las ventajas de ponerlos en marcha cuando
desarrollamos.

MVC es un "invento" que ya tiene varias dcadas y fue presentado incluso antes de la
aparicin de la Web. No obstante, en los ltimos aos ha ganado mucha fuerza y seguidores
gracias a la aparicin de numerosos frameworks de desarrollo web que utilizan el patrn
MVC como modelo para la arquitectura de las aplicaciones web.

Modelos

Es la capa donde se trabaja con los datos, por tanto contendr mecanismos para acceder a la
informacin y tambin para actualizar su estado. Los datos los tendremos habitualmente en
una base de datos, por lo que en los modelos tendremos todas las funciones que accedern a
las tablas y harn los correspondientes selects, updates, inserts, etc.
No obstante, cabe mencionar que cuando se trabaja con MCV lo habitual tambin es
utilizar otras libreras como PDO o algn ORM como Doctrine, que nos permiten trabajar
con abstraccin de bases de datos y persistencia en objetos. Por ello, en vez de usar
directamente sentencias SQL, que suelen depender del motor de base de datos con el que se
est trabajando, se utiliza un dialecto de acceso a datos basado en clases y objetos.

Vistas

Las vistas, como su nombre nos hace entender, contienen el cdigo de nuestra aplicacin
que va a producir la visualizacin de las interfaces de usuario, o sea, el cdigo que nos
permitir renderizar los estados de nuestra aplicacin en HTML. En las vistas nada ms
tenemos los cdigos HTML y PHP que nos permite mostrar la salida.
En la vista generalmente trabajamos con los datos, sin embargo, no se realiza un acceso
directo a stos. Las vistas requerirn los datos a los modelos y ellas se generara la salida, tal
como nuestra aplicacin requiera.

2
TEMA N2 MODELO-VISTA-CONTROLADOR TALLER I- INFORMATICA 2016

Controladores

Contiene el cdigo necesario para responder a las acciones que se solicitan en la aplicacin,
como visualizar un elemento, realizar una compra, una bsqueda de informacin, etc.
En realidad es una capa que sirve de enlace entre las vistas y los modelos, respondiendo a
los mecanismos que puedan requerirse para implementar las necesidades de nuestra
aplicacin. Sin embargo, su responsabilidad no es manipular directamente datos, ni mostrar
ningn tipo de salida, sino servir de enlace entre los modelos y las vistas para implementar
las diversas necesidades del desarrollo.

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

3
TEMA N2 MODELO-VISTA-CONTROLADOR TALLER I- INFORMATICA 2016

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 MVC dicha
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 el Controlador en
paralelo, ya que ambos cumplen ciclos de vida muy distintos entre s.

Ventajas y desventajas del uso del patrn

Se tienen muchas ventajas como:


1. La implementacin se realiza de forma modular.
2. Sus vistas muestran informacin actualizada siempre. El programador no
debe preocuparse de solicitar que las vistas se actualicen, ya que este
proceso es realizado automticamente por el modelo de la aplicacin.
3. Cualquier modificacin que afecte al dominio, como aumentar mtodos o
datos contenidos, implica una modificacin slo en el modelo y las

4
TEMA N2 MODELO-VISTA-CONTROLADOR TALLER I- INFORMATICA 2016

interfaces del mismo con las vistas, no todo el mecanismo de comunicacin


y de actualizacin entre modelos.
4. Las modificaciones a las vistas no afectan al modelo de dominio,
simplemente se modifica la representacin de la informacin, no su
tratamiento.
5. MVC esta demostrando ser un patrn de diseo bien elaborado pues las
aplicaciones que lo implementan presentan una extensibilidad y una
mantenibilidad nicas comparadas con otras aplicaciones basadas en otros
patrones.
Como desventajas tenemos:
1. Para desarrollar una aplicacin bajo el patrn de diseo MVC es necesario
una mayor dedicacin en los tiempos iniciales del desarrollo. Normalmente
el patrn exige al programador desarrollar un mayor nmero de clases que,
en otros entornos de desarrollo, no son necesarias. Sin embargo, esta
desventaja es muy relativa ya que posteriormente, en la etapa de
mantenimiento de la aplicacin, una aplicacin MVC es mucho ms
mantenible, extensible y modificable que una aplicacin que no lo
implementa.
2. MVC requiere la existencia de una arquitectura inicial sobre la que se deben
construir clases e interfaces para modificar y comunicar los mdulos de una
aplicacin. Esta arquitectura inicial debe incluir, por lo menos, un
mecanismo de eventos para poder proporcionar las notificaciones que genera
el modelo de aplicacin; una clase Modelo, otra clase Vista y una clase
Controlador genricas que realicen todas las tareas de comunicacin,
notificacin y actualizacin que sern luego transparentes para el desarrollo
de la aplicacin.

MVC es un patrn de diseo orientado a objetos por lo que su implementacin es


sumamente costosa y difcil en lenguajes que no siguen este paradigma.

5
TEMA N2 MODELO-VISTA-CONTROLADOR TALLER I- INFORMATICA 2016