Patrón Modelo Vista Controlador

(Redirigido desde «Modelo Vista Controlador»)
Modelo Vista Controlador
Información sobre la plantilla
Mode.jpeg
Diagrama del patrón de Arquitectura de Software, Modelo Vista Controlador (MVC)
CreadorTrygve Reenskaug
Lanzamiento inicial1979

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

LenguajeLicencia Nombre
RubyRuby on Rails
Ruby Merb
RubyRamaze
JavaGrails
JavaFramework Dinámica
JavaApache Struts
JavaApache Beehive
JavaApache Spring
JavaApache Tapestry
JavaApache Aurora
JavaApache JavaServerFaces
PerlCatalyst
PerlCGI::Application
PerlGantry Framework
PerlJifty
PerlMaypole
PerlOpenInteract2
PerlComercial PageKit
PerlCyclone 3
PerlSolstice
PerlCGI::Builder
PHPSelf Framework ( php5, MVC, ORM, Templates, I18N, Multiples DB)
PHPTlalokes
PHPSiaMVC
PHPAgavi
PHPZend Framework
PHPCakePHP
PHPKumbiaPHP
PHPSymfony
PHPQCodo
PHPCodeIgniter
PHPKohana
PHPPHP4ECore
PHPPRADO
PHPFlavorPHP
PHPYupp PHP Framework
PHPPHP Framework
PythonZope3
PythonTurbogears
PythonWeb2py
PythonPylons
PythonDjango
.NETCastle Project MonoRail
.NETApache Spring .NET
.NETApache Maverick .NET
.NETMS-PL ASP.NET MVC
.NETMicrosoft Patterns & Practices User Interface Process (UIP) Application Block
AS3Open Source Cairngorm


Véase también

  1. Patrones de Asignación de Responsabilidades (GRASP)
  2. Patrones de diseño y arquitectura

Fuentes