Patrón Modelo Vista Controlador

Modelo Vista Controlador
Información sobre la plantilla
CreadorTrygve Reenskaug

Modelo Vista Controlador (MVC). Es un estilo 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 estilo de llamada y retorno 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.

Historia

El estilo fue descrito por primera vez en 1979 por Trygve Reenskaug, entonces trabajando en Smalltalk en laboratorios de investigación de Xerox.

Descripción

  • El Modelo es el objeto que representa los datos del programa. Maneja los datos y controla todas sus transformaciones. El Modelo no tiene conocimiento específico de los Controladores o de las Vistas, ni siquiera contiene referencias a ellos. Es el propio sistema el que tiene encomendada la responsabilidad de mantener enlaces entre el Modelo y sus Vistas, y notificar a las Vistas cuando cambia el Modelo.
  • La Vista es el objeto que maneja la presentación visual de los datos representados por el Modelo. Genera una representación visual del Modelo y muestra los datos al usuario. Interactúa con el Modelo a través de una referencia al propio Modelo.
  • El Controlador es el objeto que proporciona significado a las ordenes del usuario, actuando sobre los datos representados por el Modelo. Cuando se realiza algún cambio, entra en acción, bien sea por cambios en la información del Modelo o por alteraciones de la Vista. Interactúa con el Modelo a través de una referencia al propio Modelo.

Ventajas de utilizar MVC

Una separación total entre lógica de negocio y presentación. A esto se le pueden aplicar opciones como el multilenguaje, distintos diseños de presentación, etc. sin alterar la lógica de negocio. La separación de capas como presentación, lógica de negocio, acceso a datos es fundamental para el desarrollo de arquitecturas consistentes, reutilizables y más fácilmente mantenibles, lo que al final resulta en un ahorro de tiempo en desarrollo en posteriores proyectos.
Al existir la separación de vistas, controladores y modelos es más sencillo realizar labores de mejora como:
• Agregar nuevas vistas.
• Agregar nuevas formas de recolectar las ordenes del usuario (interpretar sus modelos mentales).
• Modificar los objetos de negocios bien sea para mejorar el performance o para migrar a otra tecnología.
• Las labores de mantenimiento también se simplifican y se reduce el tiempo necesario para ellas. Las correcciones solo se deben hacer en un solo lugar y no en varios como sucedería si tuviésemos una mezcla de presentación e implementación de la lógica del negocio.
• Las vistas también son susceptibles de modificación sin necesidad de provocar que todo el sistema se paralice. Adicionalmente el patrón MVC propende a la especialización de cada rol del equipo, por tanto en cada liberación de una nueva versión se verán los resultados.

Frameworks MVC

Lenguaje        Licencia Nombre
Ruby              Ruby on Rails
Ruby              Merb
Ruby              Ramaze
Java               Grails
Java               Framework Dinámica
Java               Apache Struts
Java               Apache Beehive
Java               Apache Spring
Java               Apache Tapestry
Java               Apache Aurora
Java               Apache JavaServerFaces
Perl               Catalyst
Perl               CGI::Application
Perl               Gantry Framework
Perl               Jifty
Perl               Maypole
Perl               OpenInteract2
Perl               Comercial PageKit
Perl               Cyclone 3
Perl               Solstice
Perl               CGI::Builder
PHP              Self Framework ( php5, MVC, ORM, Templates, I18N, Multiples DB)
PHP              Tlalokes
PHP              SiaMVC
PHP              Agavi
PHP              Zend Framework
PHP              CakePHP
PHP              KumbiaPHP
PHP              Symfony
PHP              QCodo
PHP              CodeIgniter
PHP              Kohana
PHP             PHP4ECore
PHP              PRADO
PHP              FlavorPHP
PHP             Yupp PHP Framework
PHP             PHP Framework
Python          Zope3
Python          Turbogears
Python          Web2py
Python         Pylons
Python         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             Open Source Cairngorm

Véase también

Fuentes

http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

Entendiendo Modelo-Vista-Controlador

Patrón "Modelo-Vista-Controlador"

Modelo Vista Controlador

ARQUITECTURA Modelo/Vista/Controlador