MVC Design Pattern
MVC Design Pattern
INTRODUCTION
Traditionally used for desktop graphical user interfaces (GUIs), this architecture has become
popular for designing web applications and even mobile, desktop and other clients. Popular
programming languages like Java, C#, Ruby, PHP and others have popular MVC frameworks that
are currently being used in web application development straight out of the box.
The tools offered by Android, with layouts, Activities, and data structures, seem to steer us in
the direction of the Model View Controller (MVC) pattern. MVC is a solid, established pattern
that aims to isolate the different roles of an application. This is known as separation of
concerns.
COMPONENTS
Model: The central component of the pattern. It is the application's dynamic data structure,
independent of the user interface. It directly manages the data, logic and rules of the
application.
View: Any representation of information such as a chart, diagram or table. Multiple views of
the same information are possible, such as a bar chart for management and a tabular view for
accountants.
Controller: Accepts input and converts it to commands for the model or view. In addition to
dividing the application into these components, the model–view–controller design defines the
interactions between them.
1
The model is responsible for managing the data of the application. It receives user input
from the controller.
The view means presentation of the model in a particular format.
The controller responds to the user input and performs interactions on the data model
objects. The controller receives the input, optionally validates it and then passes the
input to the model.
2
APPLICATIONS
The MVC pattern became popular with Java developers when WebObjects was ported to Java.
Later frameworks for Java, such as Spring (released in October 2002), continued the strong
bond between Java and MVC. The introduction of the frameworks Django (July 2005, for
Python) and Rails (December 2005, for Ruby), both of which had a strong emphasis on rapid
deployment, increased MVC's popularity outside the traditional enterprise environment in
which it has long been popular. MVC web frameworks now hold large market-shares relative to
non-MVC web toolkits.
Although originally developed for desktop computing, MVC has been widely adopted as an
architecture for World Wide Web applications in major programming languages. Several web
frameworks have been created that enforce the pattern. These software frameworks vary in
their interpretations, mainly in the way that the MVC responsibilities are divided between the
client and server.
Some web MVC frameworks take a thin client approach that places almost the entire model,
view and controller logic on the server. This is reflected in frameworks such as Django, Rails and
ASP.NET MVC. In this approach, the client sends either hyperlink requests or form submissions
to the controller and then receives a complete and updated web page (or other document)
from the view; the model exists entirely on the server. Other frameworks such as AngularJS,
EmberJS, JavaScriptMVC and Backbone allow the MVC components to execute partly on the
client (also see Ajax).
GOALS OF MVC
This section possibly contains original research. Please improve it by verifying the claims made
and adding inline citations. Statements consisting only of original research should be removed.
(February 2017) (Learn how and when to remove this template message)
3
Code reuse: By creating components that are independent of each other, developers are able
to reuse components quickly and easily in other applications. The same (or similar) view for one
application can be refactored for another application with different data because the view is
simply handling how the data is being displayed to the user.
ADVANTAGES
DISADVANTAGES
Code navigability: The framework navigation can be complex because it introduces new
layers of abstraction and requires users to adapt to the decomposition criteria of MVC.
Multi-artifact consistency: Decomposing a feature into three artifacts causes scattering.
Thus, requiring developers to maintain the consistency of multiple representations at
once.
Pronounced learning curve: Knowledge on multiple technologies becomes the norm.
Developers using MVC need to be skilled in multiple technologies.