All Topics  
Model-view-controller

 

   Email Print
   Bookmark   Link






 

Model-view-controller



 
 
Model–View–Controller (MVC) is an architectural pattern
Architectural pattern (computer science)

Architectural patterns are software patterns that offer well-established solutions to software architecture problems in software engineering. It gives description of the elements and relation type together with a set of constraints on how they may be used....
 used in software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
. Successful use of the pattern isolates business logic
Business logic

Business logic is a non-technical term generally used to describe the functional algorithms that handle information exchange between a database and a user interface....
 from user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
 considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other. In MVC, the
model represents the information (the data) of the application; the view corresponds to elements of the user interface such as text, checkbox items, and so forth; and the controller manages the communication of data and the business rules used to manipulate the data to and from the model.

was first described in 1979 by Trygve Reenskaug
Trygve Reenskaug

Trygve Mikkjel Heyerdahl Reenskaug is a Norway computer scientist. He formulated the model-view-controller pattern for GUI software design in 1979 while visiting Xerox Parc....
, then working on Smalltalk
Smalltalk

Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
 at Xerox PARC
Xerox PARC

PARC , formerly Xerox PARC, is a research and development company in Palo Alto, California with a distinguished reputation for its contributions to information technology....
.






Discussion
Ask a question about 'Model-view-controller'
Start a new discussion about 'Model-view-controller'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Model–View–Controller (MVC) is an architectural pattern
Architectural pattern (computer science)

Architectural patterns are software patterns that offer well-established solutions to software architecture problems in software engineering. It gives description of the elements and relation type together with a set of constraints on how they may be used....
 used in software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
. Successful use of the pattern isolates business logic
Business logic

Business logic is a non-technical term generally used to describe the functional algorithms that handle information exchange between a database and a user interface....
 from user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
 considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other. In MVC, the
model represents the information (the data) of the application; the view corresponds to elements of the user interface such as text, checkbox items, and so forth; and the controller manages the communication of data and the business rules used to manipulate the data to and from the model.

History

MVC was first described in 1979 by Trygve Reenskaug
Trygve Reenskaug

Trygve Mikkjel Heyerdahl Reenskaug is a Norway computer scientist. He formulated the model-view-controller pattern for GUI software design in 1979 while visiting Xerox Parc....
, then working on Smalltalk
Smalltalk

Smalltalk is an Object-oriented programming, Type system, reflection computer programming programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human?computer symbiosis." It was designed and created in part for educational use, more so for constructionist learning, at PARC by Al...
 at Xerox PARC
Xerox PARC

PARC , formerly Xerox PARC, is a research and development company in Palo Alto, California with a distinguished reputation for its contributions to information technology....
. The original implementation is described in depth in the influential paper
Applications Programming in Smalltalk-80: How to use Model–View–Controller.

There have been several derivatives of MVC; one of the most known (due to its use by Microsoft) is the Model View Presenter
Model View Presenter

Model View Presenter is a software pattern considered a derivative of the Model-view-controller....
 pattern which appeared in the early 1990s and was designed to be an evolution of MVC. However Model–View–Controller still remains very widely used.

In November 2002 the W3C voted to make MVC structures part of their XForms
XForms

XForms is an XML format for the specification of a data processing model for XML data and user interface for the XML data, such as form . XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other than XHTML to describe a user...
 architecture for all future web applications . These specifications will now be integrated directly into the XHTML 2.0
XHTML

The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax....
 specifications. There are now over 20 vendors that support XForms frameworks with MVC integrated into the application stack.

Pattern description


Model–view–controller is both an architectural pattern and a design pattern
Design pattern

A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise....
, depending on where it is used.

As an architectural pattern


It is common to split an application into separate layers that run on different computers: the presentation/user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
 (UI), business logic
Business logic

Business logic is a non-technical term generally used to describe the functional algorithms that handle information exchange between a database and a user interface....
, and data access. In MVC the presentation layer is further separated into Model, view and controller, resulting in three layers.

MVC is often seen in web application
Web application

In software engineering, a web application or webapp is an Application software that is accessed via web browser over a network such as the Internet or an intranet....
s, where the view is the actual HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
 or XHTML
XHTML

The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax....
 page, and the controller is the code that gathers dynamic data and generates the content within the HTML or XHTML. Finally, the model is represented by the actual content, which is often stored in a database
Database

A database is a structured collection of records or data that is stored in a computer system. The structure is achieved by organizing the data according to a database model....
 or in XML nodes, and the business rules that transform that content based on user actions.

Though MVC comes in different flavors, control flow is generally as follows:
  1. The user interacts with the user interface in some way (for example, presses a mouse button
    Mouse (computing)

    In computing, a mouse is a pointing device that functions by detecting dimension motion relative to its supporting surface. Physically, a mouse consists of an object held under one of the user's hands, with one or more buttons....
    ).
  2. The controller handles the input event from the user interface, often via a registered handler
    Event handler

    In computer programming, an event handler is an asynchronous callback subroutine that handles inputs received in a program. Each event is a piece of application-level information from the underlying framework, typically the GUI toolkit....
     or callback
    Callback (computer science)

    In computer programming, a callback is executable code that is passed as an argument to other code. It allows a lower-level abstraction layer to call a subroutine defined in a higher-level layer....
    .
  3. The controller notifies the model of the user action, possibly resulting in a change in the model's state. (for example, the controller updates the user's shopping cart
    Shopping cart software

    Shopping cart software is software used in electronic commerce to assist people making purchases online, analogous to the American English term 'shopping cart'....
    ).
  4. A view uses the model indirectly to generate an appropriate user interface (for example, the view lists the shopping cart's contents). The view gets its own data from the model. The model and controller have no direct knowledge of the view.
  5. The user interface waits for further user interactions, which restarts the cycle.


Some implementations such as the W3C XForms
XForms

XForms is an XML format for the specification of a data processing model for XML data and user interface for the XML data, such as form . XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other than XHTML to describe a user...
 also use the concept of a dependency graph
Dependency graph

In mathematics, computer science and digital electronics, a dependency graph is a directed graph representing dependencies of several objects towards each other....
 to automate the updating of views when data in the model changes.

By decoupling models and views, MVC helps to reduce the complexity in architectural design and to increase flexibility and reuse of code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
.

As a design pattern


MVC encompasses more of the architecture of an application than is typical for a design pattern
Design pattern (computer science)

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code ....
.

Model
Is the domain-specific representation of the information on which the application operates. Domain logic adds meaning to raw data (for example, calculating whether today is the user's birthday, or the totals, taxes, and shipping charges for shopping cart items).
Many applications use a persistent storage mechanism (such as a database) to store data. MVC does not specifically mention the data access layer because it is understood to be underneath or encapsulated by the model.
View
Renders the model into a form suitable for interaction, typically a user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
 element. Multiple views can exist for a single model for different purposes.
Controller
Processes and responds to events (typically user actions) and may indirectly invoke changes on the model.


Selected frameworks


GUI frameworks


Java: Java Swing

Java Swing is different from the other frameworks in that it supports two MVC patterns:

Model
Frame level model—Like other frameworks, the design of the real model is usually left to the developer.
Control level model—Swing also supports models on the level of controls (elements of the graphical user interface). Unlike other frameworks, Swing exposes the internal storage of each control as a model.


View
The view is represented by a class that inherits from Component.


Controller
Java Swing doesn't use a single controller. Because its event model is based on interfaces, it is common to create an anonymous action class for each event. In fact, the real controller is in a separate thread
Thread (computer science)

In computer science, a thread of execution is a Fork of a computer program into two or more Concurrency running task s. The implementation of threads and process es differs from one operating system to another, but in most cases, a thread is contained inside a process....
, the Event dispatching thread
Event dispatching thread

The event dispatching thread is a background Thread used in Java to process events from the Abstract Window Toolkit graphical user interface event queue....
. It catches and propagates the events to the view and model.


Combined frameworks


Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
: Java Platform, Enterprise Edition
Java Platform, Enterprise Edition

Java Platform, Enterprise Edition or Java EE is a widely used Platform for Server programming in the Java programming language. The Java Platform differs from the Java Platform, Standard Edition in that it adds libraries which provide functionality to deploy fault-tolerant, Distributed computing, multitier architecture Java Applicat...
 (Java EE)

Simple Version using only Java Servlet
Java Servlet

Servlets are Java programming language objects that dynamically process requests and construct responses. The Java Servlet API allows a software developer to add dynamic content to a Web server using the Java platform....
s and JavaServer Pages
JavaServer Pages

JavaServer Pages is a Java technology that allows software developers to create dynamic web page, with HTML, XML, or other document types, in response to a Web client request....
 from Java EE:

Model
The model is a collection of Java class
Class (computer science)

In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share....
es that forms a software application intended to store, and optionally move, data. There is a single front end class that can communicate with any user interface (for example: a console, a graphical user interface
Graphical user interface

A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
, or a web application
Web application

In software engineering, a web application or webapp is an Application software that is accessed via web browser over a network such as the Internet or an intranet....
).


View
The view is represented by JavaServer Page
JavaServer Pages

JavaServer Pages is a Java technology that allows software developers to create dynamic web page, with HTML, XML, or other document types, in response to a Web client request....
, with data being transported to the page in the HttpServletRequest or HttpSession.


Controller
The controller servlet
Java Servlet

Servlets are Java programming language objects that dynamically process requests and construct responses. The Java Servlet API allows a software developer to add dynamic content to a Web server using the Java platform....
 communicates with the front end of the model and loads the HttpServletRequest or HttpSession with appropriate data, before forwarding the HttpServletRequest and Response to the JSP using a RequestDispatcher.


The Servlet is a Java class, and it communicates and interacts with the model but does not need to generate HTML or XHTML output; the JSPs do not have to communicate with the model because the Servlet provides them with the information—they can concentrate on creating output.

Unlike the other frameworks, Java EE
Java Platform, Enterprise Edition

Java Platform, Enterprise Edition or Java EE is a widely used Platform for Server programming in the Java programming language. The Java Platform differs from the Java Platform, Standard Edition in that it adds libraries which provide functionality to deploy fault-tolerant, Distributed computing, multitier architecture Java Applicat...
 defines a pattern for model objects.

Model
The model is commonly represented by entity bean
Entity Bean

An Entity Bean is a type of Enterprise JavaBean, a server-side Java Platform, Enterprise Edition component, that represents persistent data maintained in a database....
s, although the model can be created by a servlet using a business object framework such as Spring.


View
The view in a Java EE application may be represented by a JavaServer Page
JavaServer Pages

JavaServer Pages is a Java technology that allows software developers to create dynamic web page, with HTML, XML, or other document types, in response to a Web client request....
, which may be currently implemented using JavaServer Faces
JavaServer Faces

is a Java -based Web application framework intended to simplify Software of user interfaces for Java EE applications. Unlike request-driven Model-view-controller web frameworks, JSF uses a component-based approach....
 Technology (JSF). Alternatively, the code to generate the view may be part of a servlet.


Controller
The controller in a Java EE application may be represented by a servlet, which may be currently implemented using JavaServer Faces
JavaServer Faces

is a Java -based Web application framework intended to simplify Software of user interfaces for Java EE applications. Unlike request-driven Model-view-controller web frameworks, JSF uses a component-based approach....
 (JSF).


XForms

XForms
XForms

XForms is an XML format for the specification of a data processing model for XML data and user interface for the XML data, such as form . XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other than XHTML to describe a user...
 is an XML format for the specification of a data processing model for XML data and user interface(s) for the XML data, such as web forms.

Model XForms stores the Model as XML elements in the browser. They are usually placed in the non-visible elements of a web page.

View The Views are XForms controls for screen elements and can be placed directly in the visible section of web page. They are usually placed in the elements of a web page.

The model and views are bound together using reference or binding statements. These binding statements are used by the XForms dependency graph to ensure that the correct views are updated when data in the model changes. This means that forms developers do not need to be able to understand either the push or pull models of event processing.

Controller All mouse events are processed by XForms controls and XML events are dispatched.

Implementations of MVC as GUI frameworks

Smalltalk's MVC implementation inspired many other GUI
Graphical user interface

A graphical user interface is a type of user interface which allows people to human-computer interaction such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment....
 frameworks, such as the following:

  • Application Kit
    Application Kit

    The Application Kit is a collection of classes within the OpenStep specification and provided by such operating systems as OPENSTEP, GNUstep, and Mac OS X under Cocoa , providing classes oriented around graphical user interface capabilities....
    , the GUI part of Mac OS X Cocoa framework.
  • GNUstep
    GNUstep

    GNUstep is a free software implementation of NeXT's OpenStep Objective-C libraries , widget toolkit, and application development tools not only for Unix-like operating systems, but also for Microsoft Windows....
    , based on these technologies, also use MVC.
  • GTK+
    GTK+

    GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
  • JFace
    JFace

    JFace is defined by the Eclipse project as "a User interface Widget toolkit that provides helper Class for developing UI features that can be tedious to implement." It is a layer that sits on top of the raw widget system, and provides classes for handling common UI programming tasks....
  • MFC
    Microsoft Foundation Class Library

    The Microsoft Foundation Class Library is a Library that wrapper portions of the Windows API in C++ Class , including functionality that enables them to use a default application framework....
     (called Document/View architecture here)
  • Microsoft Composite UI Application Block
    Composite UI Application Block

    The Composite UI Application Block is an addition to Microsoft's .NET Framework for creating complex user interfaces made of loosely coupled components....
    , part of the Microsoft Enterprise Library
    Microsoft Enterprise Library

    The Microsoft Enterprise Library is a set of tools and Library for the Microsoft .NET Framework. It provides an API to facilitate best practices in core areas of programming including data access, security, logging, exception handling and others....
  • Nextstep
    NEXTSTEP

    Nextstep was the original Object-oriented operating system, computer multitasking operating system that NeXT developed to run on its range of proprietary computers, such as the NeXTcube....
     development environments encourage the use of MVC.
  • OpenStep
    OpenStep

    OpenStep is an object-oriented application programming interface specification for an object-oriented operating system that uses any modern operating system as its core, principally developed by NeXT with Sun Microsystems....
     development environments encourage the use of MVC.
  • Cocoa
    Cocoa (API)

    Cocoa is one of Apple Inc.'s native object-oriented application program environment for the Mac OS X operating system. It is one of four major Application programming interfaces available for Mac OS X; the others are Carbon , POSIX , and Java platform....
  • Qt
    Qt (toolkit)

    Qt is a cross-platform application development framework, widely used for the development of graphical user interface programs , and also used for developing non-GUI programs such as console tools and servers....
     since Qt4 Release.
  • Java Swing
    Swing (Java)

    Swing is a widget toolkit for Java . It is part of Sun Microsystems' Java Foundation Classes — an Application programming interface for providing a graphical user interface for Java programs....
  • Adobe Flex
    Adobe Flex

    Adobe Flex is a collection of technologies released by Adobe Systems for the development and deployment of cross-platform rich Internet applications based on the proprietary Adobe Flash platform....
  • Wavemaker
    Wavemaker

    The WaveMaker Ajax Framework is an open source software framework that allows web developers to create Ajax applications. The framework itself integrates ACEGI, Dojo 1.0, authentication, LDAP, ActiveDirectory and POJOs and their products include Visual Ajax Studio 4.0 for Rich Internet application development and WaveMaker Rapid Deployment...
     open source, browser-based development tool based on MVC
  • WPF
    Windows Presentation Foundation

    The Windows Presentation Foundation , formerly code-named Avalon, is a graphical subsystem in .NET Framework 3.0 , which uses a markup language, known as Extensible Application Markup Language, for rich user interface development....
     uses a similar Model–view–viewmodel pattern.
  • Visual FoxExpress is a Visual FoxPro MVC framework.
  • Tk toolkit
    Tk (framework)

    Tk is an open source, cross-platform widget toolkit, that is, a library of basic elements for building a graphical user interface .Tk provides a number of widgets commonly needed to develop desktop applications such as button, menu, canvas, text, frame, label etc....
     Tcl/Tk toolkit


Implementations of MVC as web-based frameworks

In the design of web applications, MVC is implemented by web template system
Web template system

A Web template system describes the software and methodologies used to produce web pages and for deployment on websites and delivery over the Internet....
s as "View for web" component.

MVC is typically implemented as a "Model 2
Model 2

In the design of Java Web applications, there are two commonly-used design models, referred to as Model 1 and Model 2.Model 1 is simpler and only recommended for small applications....
" architecture in Sun
Sun Microsystems

Sun Microsystems, Inc. is a multinational corporation vendor of computers, computer components, computer software, and information technology services, founded on February 24, 1982....
 parlance. Model2 focuses on efficiently handling and dispatching full page form posts and reconstructing the full page via a front controller. Complex web applications continue to be more difficult to design than traditional applications because of this "full page" effect. More recently AJAX
Ajax

Ajax may refer to:...
 driven frameworks that focus on firing focused UI events at specific UI Components on the page are emerging. This is causing MVC to be revisited for web application development using traditional desktop programming techniques.

.NET

  • ASP.NET MVC Framework
    ASP.NET MVC Framework

    The ASP.NET MVC Framework is a Model-view-controller framework which Microsoft is adding to ASP.NET. It allows software developers to build a Web application as a composition of three roles: Model, View and Controller....
  • Maverick.NET
    Maverick.NET

    Maverick.NET is a Maverick_Framework port from Java to C Sharp for its integration in the .NET Framework platform. As many other similar tools targeted to this development platform, Maverick.NET also works with Mono Project....
  • Monorail
    Monorail (.Net)

    MonoRail, a component of the Castle Project, is an open source web application framework built on top of the ASP.NET platform. Inspired by Ruby on Rails Action Pack, MonoRail differs from standard ASP.NET WebForms development by enforcing separation of concerns using a model-view-controller architecture....
     An ActionPack inspired MVC framework from the Castle Project
  • ProMesh.NET Open source MVC Web Application Framework for .NET 2.0 or higher.
  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for C#
MVC in ASP.net 2.0 below link

Actionscript
ActionScript

ActionScript is a scripting language based on ECMAScript. ActionScript is used primarily for the development of websites and software using the Adobe Flash Player platform , but is also used in some database applications , and in basic robotics, as with the Make Controller Kit....

  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for Actionscript.


ASP
Active Server Pages

Active Server Pages , also known as Classic ASP, was Microsoft's first server-side scripting Active Scripting for dynamic web page. Initially released as an add-on to Internet Information Services via the Windows_NT_4.0#Option_Pack, it was subsequently included as a free component of Windows Server ....

  • ASP Xtreme Evolution (AXE)


ColdFusion
ColdFusion

ColdFusion is an application server and software language used for Internet application development such as for dynamic web page. In this regard, ColdFusion is a similar product to Microsoft Active Server Pages, JavaServer Pages or PHP....

  • Mach-II
    Mach-II

    Mach-II is an open-source object-oriented programming web application framework based on the model-view-controller design pattern. The framework focuses on trying to ease software development and maintenance....
     A framework that focuses on trying to ease software development and maintenance
  • Model-Glue
    Model-Glue

    Model-Glue is a Object-oriented programming web application framework based on the Model-view-controller design pattern. Its goal is to simplify development of OO ColdFusion applications....
     Through a simple implementation of Implicit Invocation and Model–View–Controller, they allow applications to be well organized without sacrificing flexibility.
  • Fusebox
    Fusebox (programming)

    Fusebox is a web application framework for ColdFusion and PHP. Originally released in 1997, it is currently in its fifth major incarnation. The current version, Fusebox 5.5, was released to the world at the beginning of December 2007....
     Fusebox does not force the Model–View–Controller (MVC) pattern or Object-Oriented Programming (OOP) on the developer. However, either or both of these development approaches can be used with Fusebox.
  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for ColdFusion
  • Coldbox is an event-driven conventions based MVC ColdFusion Framework with an extensive array of patterns for its operations such as Factories, Helpers, Workers, etc.
  • is a MVC framework with built in authentication, redirecting, and URL routing.


Flex

  • Cairngorm
    Cairngorm (Flex framework)

    Cairngorm is one of the primary open source frameworks for application architecture in Adobe Flex. It was developed by iteration::two, who was acquired by Macromedia in 2005....
     one of the primary open source frameworks for application architecture in Adobe Flex.
  • Mate Architectural framework for Flex development.


Java

MVC web application frameworks:
  • Aranea
    Aranea framework

    Aranea framework is an Open Source Java Hierarchical Model-view-controller Web application framework that was developed by Estonian company Webmedia....
  • Cocoon
    Apache Cocoon

    Apache Cocoon, usually just called Cocoon, is a web application framework built around the concepts of Pipeline , separation of concerns and component-based web development....
  • Grails
    Grails (Framework)

    Grails is an open source web application framework which leverages the Groovy programming language . It is intended to be a high-productivity framework by following the Convention over configuration paradigm, providing a stand-alone development environment and hiding much of the configuration detail from the developer....
  • JSF
    JavaServer Faces

    is a Java -based Web application framework intended to simplify Software of user interfaces for Java EE applications. Unlike request-driven Model-view-controller web frameworks, JSF uses a component-based approach....
  • Oracle Application Framework
    Oracle Application Framework

    Oracle Application Framework is a proprietary framework developed by Oracle Corporation for application development within the Oracle E-Business Suite....
  • Spring MVC Framework
  • Struts
    Apache Struts

    Apache Struts is an open-source web application framework for developing Java EE web applications. It uses and extends the Java Servlet application programming interface to encourage developers to adopt a model-view-controller architecture....
  • Stripes
    Stripes (framework)

    Stripes is an open source web application framework based on the model-view-controller pattern. It aims to be a more lightweight framework than Struts by using Java technologies such as Java annotation and Java generics that were introduced in Java 1.5, to achieve "convention over configuration"....
  • Tapestry
    Tapestry (programming)

    Tapestry is an object-oriented Java web application framework to implement applications in accordance with the model-view-controller Design pattern ....
  • WebObjects
    WebObjects

    WebObjects is a Java platform web application server from Apple Inc., and a web application framework that runs on the server. It is available, at no additional cost, as part of the Xcode included with Apple's Mac OS X operating system....
  • WebWork
  • Wicket
    Wicket framework

    Apache Wicket is a lightweight component-based web application framework for the Java conceptually similar to JavaServer Faces and Tapestry . It was originally written by Jonathan Locke and Miko Matsumura in 2004....
  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for Java
  • LongJump
  • Struts2
    Struts2

    IntroductionApache Struts 2 is a brand-new, state-of-the-art web application framework. Struts 2 isn?t just a new release of the older Strutsframework....


JavaScript

MVC web application frameworks:
  • SproutCore
    SproutCore

    SproutCore is an open source JavaScript framework. Its goal is to allow developers to create web applications with advanced capabilities and the feel of desktop applications....
  • Wavemaker
    Wavemaker

    The WaveMaker Ajax Framework is an open source software framework that allows web developers to create Ajax applications. The framework itself integrates ACEGI, Dojo 1.0, authentication, LDAP, ActiveDirectory and POJOs and their products include Visual Ajax Studio 4.0 for Rich Internet application development and WaveMaker Rapid Deployment...
     WYSIWYG development platform for Ajax web applications
  • DojoMVC JavaScript MVC based upon Dojo core. Includes 200 method library, jQuery and MooTools integration.
  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for JavaScript
  • Woozoo MVC Framework for the Prototype JavaScript Framework
    Prototype Javascript Framework

    The Prototype JavaScript Framework is a JavaScript Software framework created by Sam Stephenson which provides an Ajax framework and other utilities....


ABAP Objects

  • BSP
    BSP

    BSP is a three-letter abbreviation that may refer to:Computers and technology* Bell System Practice, technical documentation series published internally by the AT&T Bell System...
  • Web Dynpro ABAP


Informix 4GL

  • Informix 4GL MVC models to use for Informix 4GL report and form creation
  • EGL
    Enterprise Generation Language

    EGL is a high level modern business oriented programming language, designed by IBM to be platform independent. EGL is similar in syntax to other common languages so it can be learned by application developers with similar previous programming background....
     — IBM's EGL MVC Implementation


Lua

  • Orbit
    Orbit (web framework)

    Orbit is a lightweight web application framework. It is written in Lua programming language and adheres to a model-view-controller paradigm. The design is inspired by lightweight Ruby frameworks such as Camping ....


Perl

  • Catalyst
    Catalyst (software)

    Catalyst is an open source web application framework written in Perl, that closely follows the model-view-controller architecture, and supports a number of experimental web patterns....
     An MVC-based avant-garde web framework.
  • Maypole A useful perl MVC framework
  • Gantry An MVC framework similar to django
  • Jifty the "one true way" for MVC
  • CGIApplication Another MVC Web Framework
  • MasonXMiniMVC MVC Framework
  • Solstice Based on the MVC programming paradigm,


PHP

  • Akelos PHP Framework
    Akelos PHP Framework

    The Akelos PHP Framework is a PHP port of the Web application framework Ruby on Rails. Like Rails, Akelos claims to simplify and improve the process of developing database driven web applications....
     a Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
     port to PHP
    PHP

    PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
    4/5.
  • CakePHP
    CakePHP

    CakePHP is an open source web application framework for producing web applications written in PHP. It is written in PHP, modeled after the concepts of Ruby on Rails, and distributed under the MIT License....
     webapplication framework modeled after the concepts of Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
    .
  • CodeIgniter
    CodeIgniter

    CodeIgniter is an open source web application framework for use in building dynamic web sites with PHP. It enables developers to build applications faster - compared to coding from scratch - by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and a logical structure to access these libraries....
     A PHP MVC framework.
  • A PHP MVC framework and CMS platform.
  • Drupal
    Drupal

    Drupal is a free software and open source modular Software framework and Content Management System written in the programming language PHP. It is used as a "back end" system for many different types of websites, ranging from small personal blogs to large corporate and political sites....
     A Content Management System
    Content management system

    A content management system is a computer application used to create, edit, manage, search and publish various kinds of Content . CMSs are frequently used for storing, controlling, versioning, and publishing industry-specific documentation such as news articles, operators' manuals, technical manuals, sales guides, and marketing brochures....
     utilizing the MVC framework.
  • FUSE
    Fuse Framework

    FUSE is a PHP List of web application frameworks created by Jim Keller that uses Model-view-controller architecture along with Object-relational mapping Data Modeling concepts to provide tools for rapid PHP development....
     A powerful but easy-to-use PHP 5 Framework for MVC development modeled after the concepts of Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
    .
  • Jelix (web framework)
  • Jaws
    Jaws Project

    Jaws is a free software and open source modular Software_framework and Content Management System written in PHP. Like many CMSs, Jaws allows the system administrator to create and organize content....
     is a Framework and Content Management System for building dynamic web sites.
  • Joomla v1.5.x is an open source Content Management System that employs the MVC model for its extensions, called components and modules.
  • Kohana
    Kohana (web framework)

    Kohana is an open source, PHP5, web application framework that uses the Model View Controller Design pattern . It aims to be secure, lightweight, and easy to learn and use....
     is an open source MVC oriented framework, originally forked from CodeIgniter.
  • LISA MVC
    LISA MVC

    LISA is an open source Object-oriented programming web application Framework#Software framework based on PHP 5.2 and Smarty template engine. LISA follows the model-view-controller architecture, and licensed under Gpl version 3....
     is an open source object oriented web application framework.
  • Micro CMS
    Micro CMS

    Micro CMS is small and friendly, but also modern CMS and MVC framework written in PHP. It's main task is easier PHP web pages and applications development with no compromise in simplicity, performance, SEO and features....
     Open Source (LGPL) MVC framework and nice and simple CMS in one
  • A lightweight open-source PHP5 library featuring a simple MVC routing framework.
  • Odin Assemble
    Odin Assemble

    Odin Assemble is a free closed source PHP web application framework. Odin Assemble is a small footprint application framework designed to work in both low resource and high security environments....
     Small footprint PHP
    PHP

    PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
     based MVC Framework.
  • Orinoco Framework
    Orinoco Framework

    The Orinoco Framework is an open source, object-oriented, full-stack web framework implemented in PHP and released under the MIT License. The framework follows the Model-View-Controller architecture and implements the Model 2 design paradigm....
     is a full-stack yet lightweight framework written in PHP5. It implements the Model 2
    Model 2

    In the design of Java Web applications, there are two commonly-used design models, referred to as Model 1 and Model 2.Model 1 is simpler and only recommended for small applications....
     design paradigm.
  • PHPonTrax
    PHPonTrax

    PHPOnTrax is a web application framework that is inspired by Ruby on Rails and includes everything needed to create database-backed web-applications according to the Model-View-Controller pattern of separation....
     A PHP 5 MVC framework modeled after Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
    .
  • phpXCore
    PhpXCore

    phpXCore is a free open source content management framework for creating customized content management systems written in PHP. phpXCore framework bases on Model-view-controller design pattern and supports both PHP4 and PHP5....
     A MVC design pattern based PHP content management framework compatible with PHP4 and PHP5.
  • Prado A PHP 5 MVC framework modeled after ASP.NET
    ASP.NET

    ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
     web forms.
  • Qcodo
    Qcodo

    The QCodo Development Framework is an open-source PHP 5 web application framework which builds an Object Relational Model , CRUD UI pages, and AJAX hooks from an existing data model....
     is an open-source PHP 5 web application framework
  • SilverStripe
    SilverStripe

    SilverStripe is a Free and open source software programming framework and content management system for creating and maintaining websites. The CMS provides an intuitive web-based administration panel, allowing any person to maintain their website without knowledge of markup or programming languages....
     contains a fully fledged PHP 5.2 ORM/MVC Framework focused on building websites. Much like Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
    .
  • Solar
    Solar

    Solar means appertaining to the super star, or Sol, our planet's star. Solar also has other meanings....
  • Switch board (framework)
    Switch board (framework)

    Switch Board is a MVC framework written for PHP. Its original concepts were taken from a preexisting ColdFusion/PHP framework called Fusebox . Its evolution through development has greatly changed its structure to have very little resemblance to Fusebox other than slight functionality of the switch, settings and template files....
     with Routing PHP 5 MVC Framework with Routing.
  • Symfony Framework PHP 5 MVC Framework modeled after the concepts of Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
    .
  • Yii PHP Framework A PHP 5-based MVC framework.
  • Zend Framework
    Zend Framework

    Zend Framework is an open source, object-oriented web application framework implemented in PHP 5 and licensed under the New BSD License....
     A PHP 5-based MVC framework modeled after the concepts of Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
    .
  • ZNF
    ZNF

    ZNF is a framework for developing PHP web applications. It was originally based on the Apache Struts project of the Apache Software Foundation....
     PHP5 MVC framework for enterprise web applications
  • Zoop Framework
    Zoop Framework

    Zoop Framework stands for Zoop Object Oriented PHP Framework.Zoop is a free software, object oriented web application framework for PHP based on the Model View Controller Methodology....
     A Mature PHP 4/5 MVC framework.
  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for PHP


Python

  • Django
    Django web framework

    Django is an open source web application framework, written in Python , which loosely follows the model-view-controller Design pattern . It was originally developed to manage several news-oriented sites for Lawrence Journal-World of Lawrence, Kansas, and was released publicly under a BSD license in July 2005; the framework was named after gy...
     A complete Python web application framework. Django prefers to call its MVC implementation
    MTV, for Model-Template-View.
  • Enthought
    Enthought

    Enthought, Inc. is a software company that develops scientific computing tools, using primarily Python . It is best known for the development and maintenance of the SciPy library of mathematics, science, and engineering algorithms as well as the ETS library of Python application building components....
     The Enthought Tool Suite brings the Model–view–controller mindset to scientific GUI's and visualization
  • Pylons—Python Web Framework
  • TurboGears
    TurboGears

    TurboGears is a Python web application framework consisting of several underlying components such as MochiKit, SQLObject, CherryPy and Kid .TurboGears was created in 2005 by Kevin Dangoor as the framework behind the as yet unreleased Zesty News product....
     for Python
  • web2py
    Web2py

    Description Web2py is an open source framework for agile development of database driven web applications. Web2py is written in the Python language and is programmable in Python....
     A scalable full-stack enterprise level Python agile web development framework with support for highly flexible and rapid database-driven web application development.
  • Zope
    Zope

    Zope is a free software and open source software, object-oriented web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment." It can be almost fully managed with a web-based user interface....
     Content Management Framework
  • PureMVC
    PureMVC

    PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller concept. Based upon proven design patterns, this free, open source software framework which was originally implemented in the ActionScript 3 language for use with Adobe Flex, Adobe Flash and Adobe AIR, has now been porting to nearly all m...
     Framework for Python


Ruby

  • Camping
    Camping (microframework)

    Camping is a web application framework which consistently stays at less than 4.5kb of code. The complete source code can be viewed on a single page....
  • Merb
    Merb

    Merb, short for "Mongrel +eRuby#erb", is a Model View Controller web framework written in Ruby . Merb adopts an approach that focuses on essential core functionality, leaving most functionality to plugins....
  • Nitro
    Nitro (web framework)

    Nitro is a Ruby -based web application framework created by George Moschovitis. Nitro features a powerful template system with a configurable pipeline of transformation steps....
  • Ramaze
  • Ruby on Rails
    Ruby on Rails

    Ruby on Rails is an open source web application framework for the Ruby . It is often referred to as "Rails" or "RoR". It is intended to be used with an agile software development, which is often utilized by web developers for its suitability for short, client-driven projects....
  • Monkeybars
    Monkeybars Framework

    Monkeybars is a library that provides a structured way of building Swing applications using JRuby. Although Monkeybars uses the ideas of models, views, and controllers, it?s usage of the terms is not the same as in traditional MVC systems....


Smalltalk

  • AIDA/Web
    AIDA/Web

    AIDA/Web is an object-oriented, open source Smalltalk web application server using the model-view-controller architectural pattern. First developed in 1996 by Janko Mivsek, AIDA/Web was designed to integrate the quite distinct object and web philosophies....


XML

  • XForms
    XForms

    XForms is an XML format for the specification of a data processing model for XML data and user interface for the XML data, such as form . XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other than XHTML to describe a user...
    —XForms has an integrated Model–view–controller architecture with an integral dependency graph that frees the programmer from specifically having to perform either push or pull operations.


See also

  • Trygve Reenskaug
    Trygve Reenskaug

    Trygve Mikkjel Heyerdahl Reenskaug is a Norway computer scientist. He formulated the model-view-controller pattern for GUI software design in 1979 while visiting Xerox Parc....
    —first formulated the model–view–controller pattern
  • Architectural patterns
    Architectural pattern (computer science)

    Architectural patterns are software patterns that offer well-established solutions to software architecture problems in software engineering. It gives description of the elements and relation type together with a set of constraints on how they may be used....
  • Model View Presenter
    Model View Presenter

    Model View Presenter is a software pattern considered a derivative of the Model-view-controller....
  • Model 1
    Model 1

    In the design of Java Web applications, there are two commonly-used design models, referred to as Model 1 and Model 2.In Model 1, a request is made to a JavaServer Pages or servlet and then that JSP or servlet handles all responsibilities for the request, including processing the request, validating data, handling the business logic, and g...
  • Three-tier (computing)
  • The Observer design pattern
    Observer pattern

    The observer pattern is a design pattern in which an Object #Objects_in_object-oriented_programming , called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their Method ....
  • The Template Method design pattern
    Template method pattern

    In software engineering, the template method pattern is a software design pattern.It is a so-called behavioral pattern, and is unrelated to template ....
  • The Presentation-abstraction-control
    Presentation-abstraction-control

    Presentation-abstraction-control is a software Architectural pattern , somewhat similar to model-view-controller . PAC is used as a hierarchical structure of agents, each consisting of a triad of presentation, abstraction and control parts....
     (PAC) pattern
  • The naked objects
    Naked objects

    Naked objects is an Architectural pattern used in software engineering....
     pattern, often positioned as the antithesis of MVC, though Reenskaug suggests otherwise
  • Model–View–Adapter
    Model-view-adapter

    Model?view?adapter is an Architectural pattern and multitier architecture, used in software engineering. In complex computer applications that present large amounts of data to users, developers often wish to separate data and user interface concerns so that changes to the...


External links

  • CodeProject article.
  • by Martin Fowler.
  • Microsoft's Scott Guthrie on .NET MVC
  • Scott Hanselman builds an application step-by-step using the first CTP of the ASP.NET MVC Framework in this Introductory Video*Greer, Derek. "", Ctrl-Shift-B, 2007.