MVC Design introduction
Front Controller Design
Basics of MVC
MVC Design: A Front Controller based Approach
MVC, which stands for Model View Controller, is a design pattern that helps us
achieve the decoupling of data access and business logic from the presentation
code , and also gives us the opportunity to unit test the GUI effectively and
neatly, without worrying about GUI changes at all. In this section, we will fi
rst study the basic MVC pattern and then move on to understanding the ASP.NET
Front Controller Design
MVC is based on a front controller design, where we have a centralized
controller instead of multiple controllers, as was the case in the page
controller based design that we saw earlier. By default, ASP.NET is page
controller based. So making a front controller based project would require a
lot of work (using HttpHandlers to route the requests manually). Basically, in
a front controller design, we trap all of the client requests and direct them
to a central controller, and the controller then decides which view to render
(or which ASPX page to process). Here is how a basic model of a front
controller design works:
As you can see, the front controller sits at the "front" of all of the pages and
renders a view based on logic in the central controller fi le. In the next
section we will study and analyze exactly what goes on inside a controller, a
view, and a model.
Basics of MVC
Let's fi rst get into the theoretical aspects of MVC. MVC design has three major
Model: This refers to the data that is shown in the UI. This data can come from
different sources, for example, a database.
View: This refers to the user interface (UI) components that will show the
Controller: This controls when to change the view, based on user actions, such
as button clicks.
In terms of ASP.NET web applications, the model, view, and controller
participants can be identifi ed as:
View: This refers to HTML markup in ASPX pages, minus the code-behind logic.
This view is rendered in the presentation tier (the browser).
Controller: This refers to the special controller classes that decide which
model needs to be shown to which particular view.
Model: This refers to the data coming from the data layer, which may be
processed by the business layer.
Before moving ahead, an important point to understand is that the MVC design is
not a replacement to the n-tier architecture. MVC is more focused on how to
keep the UI separate from the logic and the model; the model itself can be
broken into separate tiers.
In the MVC design, the model, the view, and the controller are not related
directly to the layers, or to the physical tiers; they are logical components
that operate together in a certain pattern. The controller is related directly
to the model and the view. Based on user actions (in the view), it fetches the
data (the model) and populates the view. The relationship between the
controller, the model, and the view can be depicted as:
The view is based on the model, which means that its job is to simply render the
model that the controller passes to it:
So the net relationship between the three components can be described as:
A few important points to note from the above diagram:
We can see that the model depends neither on the view nor on the controller,
which is logical. Think of it like this: we have some data in the database
tables; we use DAL code to handle this data and BL code to operate on this data
as per certain business rules. Now, it is up to the UI to present and show this
data. But the data itself is not dependent on the graphical user interface
(GUI). So the model is independent of the view and the controller.
The view does not depend on the controller; rather, the controller is
associated with the view. That means we have a separation between the view and
the controller, allowing us to change views independent of the controller.
The view depends on the model, and is updated when the model's state has
changed. As the view cannot contain any logic (which is stored inside the
model), the view depends on the model; that is, the model is in charge of
updating the contents or displaying the view.
Now we will look at the practical aspects of implementing this MVC design using
the ASP.NET MVC framework, which will help us implement our web applications.
MVC will be ready in no time. But before going ahead with the actual code, we
need to understand another important aspect of ASP.NET MVC framework, that is,
More Related links
The ASP.NET MVC framework was created to support pattern-based software
development. In other words, the framework was designed to make it easier to
implement software design principles and patterns when building web
Define .Net Assembly. | What does an assembly contain? |
Define a private assembly and a shared assembly. | What are Satellite
Assemblies? | What do you understand by side-by-site execution of assembly? |
How do you create a resource-only assembly? | Explain how to retrieve resources
using ResourceManager class. | Define Strong Name. | How do you apply a strong
name to assembly? | Define Global Assembly Cache. | How do you install assembly
to the Global Assembly Cache?
Define Authentication and Authorization | What is the
authentication mode available in ASP.NET? | How do you set authentication mode
in the ASP.NET application? | List out the difference between windows
authentication and form authentication | How do you impersonate the
authenticated user in ASP.NET? | How do you provide secured communication in
What is XML Web Server? | Describe the Components that help
locate and consume XML Web Service. | Describe the process of communication
between Client and Web Service. | What are the components published while
deploying of Web Service? | Describe .disco file. | Describe the step to be
followed to access web service by client.
How do we access crystal reports in .NET?
What are the various components in crystal reports?
What basic steps are needed to display a simple report in crystal?..........
One of the important goals of ASP.NET 2.0 is 70% code reduction. The data
controls supplied with ASP.NET 2.0 play an important role in making this
ambitious goal a reality. Data source controls provide a consistent and
extensible method for declaratively accessing data from web pages..............