Patrón Modelo Vista Controlador
|
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.
Sumario
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