Table of Contents
- Abstract
- Introduction to MVC
- Why MVC?
- ASP.NET MVC over ASP.NET Web-Forms
- Overview of Model View Controller
- What is a Model?
- What is a View?
- What is a Controller?
- Overview working of MVC
- Overview of routes collection
- What is route?
- What happened at runtime?
- Conclusion
- Special thanks to audience
Abstract
In this article we will discuss what was presented in the session for ASP.NET in Delhi Developer's day held on November 15, 2014.
It was an awesome event where all developers united under a common platform. All enjoyed and tried to explore their knowledge of ASP.NET MVC.
In this session, we covered the very basics of ASP.NET MVC, that is a very important build foundation of the ASP.NET MVC framework.
Here are the topics we covered in this session:
- Introduction to MVC.
- Why MVC.
- Reason to choose MVC against ASP.Net web forms.
- Overview of Model View Controller.
- Overview working of MVC.
- Overview of routes collection.
- Revisiting session.
- Question / Answer / Suggestion.
Introduction to MVC
A background to ASP.Net MVC:
- Based on ASP.Net.
- A framework for Rapid Application Development (RAD), used to develop Web applications.
- Is a composition of Model, View and Controller.
Is an open source and the code is available in Code Plex (In 2009 it was released under the Microsoft Public License and in 2012 it was released under the Apache License 2.0).
We can simply say that ASP.NET MVC is a framework that provides us the ability to create a web project, web application (called Rapid Application Development (RAD)).
Why MVC
Take a moment and think about the valuable Software Pattern Model-View-Controller. We can also predicts from the image that the MVC pattern divides a software application into three interconnected parts/components. Basically, it's a concept of separation (here just separation of internal representation of information from ways/logics/techniques how it is being represented to the end-user).
FIGURE 1: DEFINING MVC
As in the preceding image, let's elaborate on Model View Controller (MVC).
A Controller can send commands/directions to the model to update its state as well as commands to the view.
Associated views and the controller are notified by the Model as in changes of its state.
The Model provides a specific result as an output upon the request of the View to represent:
FIGURE 2: DEFINING MVC
Let's understand this from the above associated image.
In simple words, we can say that MVC is providing a facility to make our layers separate that are separated and interacting with each other.
ASP.NET MVC over ASP.NET Web-Forms
There are numerous reasons to choose ASP.Net for web development over ASP.Net Web Forms:
- ASP.Net MVC is a web framework and is based on the MVC pattern.
- No view state (performance is better in ASP.Net MVC).
- Completely testable.
- Integration with the client side (easily handshakes with client-side scripting like jQuery and so on).
Flexibility (provides various view engines that render HTML; Razor View Engine is the most famous).
Let's think of a scenario where we are writing an application in ASP.NET Web Forms. There are two classes for one thing. Let's say a default page that includes Default.aspx and Default.aspx.cs pages and our designer page.
A designer page has all the server control and aspx pages, that contain visualization of our server controls (UI part) and finally our cs page (class) contains all the functionality and other logic. Our class is based on an ASP.NET Page lifecycle (for complete details refer to: ASP.NET Page Life Cycle Overview).
We can't completely test our Web-Forms. To make it properly testable at some instance, we need to implement some other UI Design pattern such as MVP, MVVM or MVC.
If we are implementing the MVC UI Pattern to our Web Forms then why don't we use the ASP.NET MVC framework that already uses this pattern and provides everything required to create web apps?
Overview of Model View Controller
"This section of the session was a part of great discussion, what we learned until now. Please comment in this article what we discussed (all queries and so on). I'll update this section later."
Here is the conclusion that we discussed (for the ASP.Net MVC framework).
Models
- A MVC Model is typically a class (of C# or VB.NET).
- Both the controller and view can access the Model.
- A Model can be used to pass data from a Controller to the View.
- The main purpose of a View is to display the data in a page using the Model.
Views
- A View is nothing but a page, you can say a web page, and it does not have code-behind
- All page specific HTML generation and formatting can be done inside the View
- A request to the View can be made only from a Controller's action method
Controllers
- A Controller is typically a class (of C# or VB.Net) and inherits “system.mvc.controller”.
- Within this class, methods can be implemented and are called action methods. These are responsible for responding to the browser and/or calling the Views.
- The Controller class can access and use the Model class to pass data to the Views.
Overview working of MVC
In the following we will explore MVC more:
FIGURE 3: REQUEST RESPONSE
High level overview says: the browser sends a request to ASP.Net MVC and it returns a response back to the browser (the request is a HTTP request and the response is a HTTP response).
FIGURE 4: WORKING OF ASP.NET MVC
In a broader way: The first request comes to the Route Tables then passes to a specific controller before interaction with the Model Binding. It goes through Authentication and Authorization and afterwards fires a specific Action Method and executes the results to the View.
Overview of routes collection
In simple words, the routes collection (we also can say Route table) is nothing but a collection of routes.
Routes
A system works on a pattern matching mechanism. A route matches an incoming request to meet a specific pattern and allows once matched else denied.
What happens at runtime
At runtime, the routing engine uses a route table (contains various routes) to match incoming URLs with the defined route patterns (URL patterns).
FIGURE 5: ROUTE COLLECTION
In the above image, the URL will be processed if any match is found else it will throw the HTTP Status code Not Found (404 error).
Example of typical route collections:
- public class RouteConfig
- {
- public static void RegisterRoutes(RouteCollection routes)
- {
- routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- routes.MapRoute(
- name: "Default",
- url: "{controller}/{action}/{id}",
- defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
- );
- }
- }
Conclusion
In this very first session we covered:
ASP.Net MVC Series For Beginners: Part 1
- Basics of MVC
- Discussed MVC pattern
- Discussed basics of MVC architecture
- Discussed basics of route collection / route table
We will continue in the next session:
Special thanks to the audience
Audience is the breath of any event and plays an important role in making an event successful. I am thankful to all the participants to make this session interactive. I do not stop myself to mention some enthusiast and energetic participants who propelled energy and made this event awesome. Great guys: Sachin, Saurabh, Akash Jain, Taroon, Hussain, Piyush, Neru (please comment if I missed anyone).