Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelovistacontrolador
De Wikipedia, la enciclopedia libre
El modelovistacontrolador (MVC) es un patrn de arquitectura de software que
separa los datos y la lgica de negocio de una aplicacin de la interfaz de usuario y el
mdulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC
propone la construccin de tres componentes distintos que son el modelo, la vista y el
controlador, es decir, por un lado define componentes para la representacin de la
informacin, y por otro lado para la interaccin del usuario.1 2 Este patrn de arquitectura
de software se basa en las ideas de reutilizacin de cdigo y la separacin de conceptos,
caractersticas que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior
mantenimiento.3 4
ndice
1 Historia
2 Descripcin del patrn
2.1 Interaccin de los componentes
2.2 MVC y bases de datos
3 Uso en aplicaciones Web
4 Frameworks MVC
5 Vase tambin
6 Referencias
7 Enlaces externos
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.5
MVC fue introducido por Trygve Reenskaug (web personal (http://heim.ifi.uio.no/~trygver)) en Smalltalk-76 durante su visita a Xerox Parc6 7 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 Smalltalk80.8 Solo ms tarde, en 1988, MVC se expres como un concepto general en un artculo9 sobre Smalltalk-80.
En esta primera definicin de MVC el controlador se defina como "el mdulo que se ocupa de la entrada" (de forma similar a como la vista
"se ocupa de la salida"). 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
(utilizando llamadas directas o el "observer" para desacoplar el 'modelo' de la 'vista' en el 'modelo' activo10 ).
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)
... y otros que han adaptado MVC a diferentes contextos.
1/5
12/5/2015
sobre la informacin (por ejemplo, editar un documento o un registro en una base de datos). Tambin puede enviar comandos a su 'vista'
asociada si se solicita un cambio en la forma en que se presenta el 'modelo' (por ejemplo, desplazamiento o scroll por un documento o por
los diferentes registros de una base de datos), por tanto se podra decir que el 'controlador' hace de intermediario entre la 'vista' y el
'modelo' (vase Middleware).
La Vista: Presenta el 'modelo' (informacin y lgica de negocio) en un formato adecuado para interactuar (usualmente la interfaz de
usuario) por tanto requiere de dicho 'modelo' la informacin que debe representar como salida.
Frameworks MVC
Lenguaje
Licencia
Objective
Apple (http://developer.apple.com)
C
http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador
Nombre
Cocoa
2/5
12/5/2015
Ruby
MIT (http://opensource.org/licenses/mit-license.php)
Ruby on Rails
Ruby
MIT (http://opensource.org/licenses/mit-license.php)
Merb
Ruby
MIT (http://opensource.org/licenses/mit-license.php)
Ramaze
Ruby
MIT (http://opensource.org/licenses/mit-license.php)
Rhodes
Java
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Grails
Java
GPL (http://www.opensource.org/licenses/gpl-license.php)
Java
LGPL (http://www.martincordova.com)
Framework Dinmica
Java
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Struts
Java
Apache (http://beehive.apache.org/)
Beehive
Java
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Spring
Java
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Tapestry (http://tapestry.apache.org/)
Java
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Aurora (http://www.auroramvc.org)
Java
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
JavaServerFaces (http://java.sun.com/javaee/javaserverfaces/)
Sails.JS (http://sailsjs.org/)
ExtJS 4 (http://www.sencha.com/products/extjs/)
JavaScript
MIT
(https://github.com/angular/angular.js/blob/master/LICENSE)
AngularJS (https://angularjs.org/)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
Mojolicious (http://mojolicio.us/)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
Catalyst (http://www.catalystframework.org/)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
CGI::Application (http://cgiapp.erlbaum.net/)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
Jifty (http://jifty.org/view/HomePage)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
Maypole (http://maypole.perl.org/)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
OpenInteract2 (http://www.openinteract.org/)
Perl
Comercial
PageKit (http://pagekit.org/)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
Cyclone 3 (http://www.cyclone3.org/home)
Perl
GPL (http://www.opensource.org/licenses/gpl-license.php)
CGI::Builder (http://search.cpan.org/perldoc?CGI::Builder)
PHP
[1] (http://www.yiiframework.com/license/)
Yii (http://www.yiiframework.com/)
PHP
MIT (http://opensource.org/licenses/mit-license.php)
Laravel (http://laravel.com/)
PHP
GPL (http://www.opensource.org/licenses/gpl-license.php)
PHP
LGPL (http://www.opensource.org/licenses/lgpl-license.php)
ZanPHP (http://www.zanphp.com/)
PHP
[2] (http://stefanframework.com)
[Stefan Framework]
PHP
LGPL (http://www.opensource.org/licenses/lgpl-license.php)
Tlalokes (http://tlalokes.org/)
PHP
GPL (http://www.siaempresarial.com/mvc/mvc-license.php)
SiaMVC (http://siaempresarial.com/siamvc/)
PHP
LGPL (http://www.opensource.org/licenses/lgpl-license.php)
Agavi (http://agavi.org/)
PHP
BSD (http://www.opensource.org/licenses/bsd-license.php)
PHP
MIT (http://www.opensource.org/licenses/mit-license.php)
CakePHP (http://www.cakephp.org/)
PHP
PHP
MIT (http://www.symfony-project.org/license)
PHP
PHP
PHP
PHP
BSD (http://kohanaframework.org/)
PHP
MPL
1.1
(http://php4e.codeman.cl/index.php? PHP4ECore (http://php4e.codeman.cl/)
SECCION=msg&COD=59&MODULE=home)
http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador
Symfony (http://www.symfony.com/)
Kohana (http://kohanaframework.org/)
3/5
12/5/2015
PHP
BSD (http://www.pradosoft.com/)
PRADO (http://www.pradosoft.com/)
PHP
GNU (http://www.practico.org/)
Practico (http://www.practico.org/)
PHP
GNU (http://www.flavorphp.com/)
FlavorPHP (http://www.flavorphp.com/)
PHP
PHP
BSD (http://www.yiiframework.com/license/)
PHP
GPL (http://www.logick.es)
PHP
GPL (http://www.opensource.org/licenses/gpl-license.php)
PHP
MIT (https://github.com/alrik11es/sPHPf/blob/master/license.txt)
(sPHPf)
Simple
(http://sphpf.coldstarstudios.com/)
PHP
GNU/GPL
(http://www.gvpontis.gva.es/cast/gvhidragvHidra (http://www.gvhidra.org)
herramienta/gvhidra-que-es-gvhidra/)
Python
ZPL (http://www.zope.org/Resources/License/)
Zope3 (http://wiki.zope.org/zope3/MVC)
Python
Varias (http://docs.turbogears.org/1.0/License)
Turbogears (http://www.turbogears.org/)
Python
GPL (http://web2py.com/examples/default/license)
Web2py (http://web2py.com/)
Python
Python
BSD
Django
(http://code.djangoproject.com/browser/django/trunk/LICENSE)
.NET
MonoRail (http://www.castleproject.org/monorail/index.html)
.NET
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Spring.NET (http://www.springframework.net/)
.NET
Apache (http://www.apache.org/licenses/LICENSE-2.0.html)
Maverick.NET (http://mavnet.sourceforge.net/)
.NET
MS-PL (http://www.opensource.org/licenses/ms-pl.html)
.NET
Microsoft
Patterns
(http://msdn.microsoft.com/practices/)
User
Interface
Process
(UIP)
Application Block
(http://msdn.microsoft.com/practices/compcat/default.aspx?
pull=/library/en-us/dnpag/html/uipab.asp)
AS3
Adobe
Open
Source Cairngorm
(http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm) (http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm)
AS3
Flex
y MIT
License
license.php)
&
Practices
(http://www.opensource.org/licenses/mit-
PHP
Framework
CycleFramework (http://code.google.com/p/cycleframework/)
Vase tambin
Ingeniera Tcnica en Informtica de Gestin
Ingeniera de Software
Referencias
1. "More deeply, the framework exists to separate the representation of information from user interaction." The DCI Architecture: A New Vision of
Object-Oriented Programming (http://www.artima.com/articles/dci_vision.html) - Trygve Reenskaug and James Coplien - March 20, 2009.
2. "... the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of
object." Applications Programming in Smalltalk-80(TM):How to use Model-View-Controller (MVC) (http://st-www.cs.illinois.edu/users/smarch/stdocs/mvc.html).
3. Simple Example of MVC (Model View Controller) Design Pattern for Abstraction (http://www.codeproject.com/Articles/25057/Simple-Exampleof-MVC-Model-View-Controller-Design)
4. Best MVC Practices (http://www.yiiframework.com/doc/guide/1.1/en/basics.best-practices)
5. http://c2.com/cgi/wiki?ModelViewControllerHistory Historia del Modelo-Vista-Controlador
6. Notes and Historical documents (http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html) from Trygve Reenskaug, inventor of MVC.
7. "A note on DynaBook requirements", Trygve Reenskaug, 22 March 1979, SysReq.pdf (http://folk.uio.no/trygver/1979/sysreq/SysReq.pdf).
8. [http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html How to use Model-View-Controller (MVC)
9. Krasner, Glenn E.; Stephen T. Pope (Aug/Sep de 1988). A cookbook for using the model-view controller user interface paradigm in Smalltalk80 (http://dl.acm.org/citation.cfm?id=50757.50759). The JOT (SIGS Publications). Also published as "A Description of the Model-ViewController
User
Interface
Paradigm
in
the
Smalltalk-80
System
(http://www.itu.dk/courses/VOP/E2005/VOP2005E/8_mvc_krasner_and_pope.pdf)" (Report), ParcPlace Systems; Retrieved 2012-06-05.
10. http://msdn.microsoft.com/en-us/library/ff649643.aspx
11. The evolution of MVC and other UI architectures (http://martinfowler.com/eaaDev/uiArchs.html) from Martin Fowler.
12. How to Use ModelViewController (MVC) (http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html).
13. Leff, Avraham; James T. Rayfield (September 2001). Web-Application Development Using the Model/View/Controller Design Pattern. IEEE
Enterprise Distributed Object Computing Conference. pp. 118127.
14. MCV en javascript con AJAX y jQuery (http://www.cristalab.com/tutoriales/mvc-en-javascript-con-ajax-y-jquery-parte-2-controladores-c95719l/)
http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador
4/5
12/5/2015
Enlaces externos
Desarrollando una aplicacin Java MVC paso a paso (http://www.re-orientation.com/manual-creacion-aplicacion-java-MVC)
Introduccin a ASP.NET MVC (http://cup-coffe.blogspot.com/2010/02/introduccion-al-aspnet-mvc.html)
Texto introductorio El maldito libro de los descarrilados- Herrera - 2010 (http://yottabi.com/mld.pdf) Ruby on Rails, MVC
Desarrollando una aplicacin Spring MVC paso a paso (http://www.davidmarco.es/spring-mvc)
Definicin bsica del MVC (http://www.lab.inf.uc3m.es/~a0080802/RAI/mvc.html)
Ejemplo de MVC en Gambas3. Programacin Visual en gnu/linux (http://jsbsan.blogspot.com.es/2013/08/modelo-vista-controlador-mvcejemplos.html)
https://www.youtube.com/watch?v=NU1QriNhW6g Software Desarrollado con MVC .NET
Obtenido de http://es.wikipedia.org/w/index.php?title=Modelovistacontrolador&oldid=82211749
Categora: Arquitectura de software
Esta pgina fue modificada por ltima vez el 4 may 2015 a las 16:40.
El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran ser aplicables clusulas adicionales.
Lanse los trminos de uso para ms informacin.
Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una organizacin sin nimo de lucro.
http://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador
5/5