Introduction
In this tip, I will explain what MVC is and how it is different from web forms. I will start a series of learning MVC soon.
What is MVC?
Let's start first with what is MVC?
In a general sense, MVC stands for Model-View-Controller. It is a software design pattern. It is different from MVVM pattern.
MVC is a pattern based on separation of concerns, which means that View, Model and Controller are independent of each other. As a result, working in teams, maintenance and testing of the application become simpler and easier.
So, now what is this Model, View and Controller?
Model
The Model in MVC is a set of classes or project that describe your business logic. It represents all the business logic, like manipulating of data for your business/application, and data access operations like how you connect with database and get the data. In MVC, Model directly communicates with the Controller.
View
The View in MVC are pages which we display to users, i.e., UI part which may consist of HTML, CSS, jQuery, JavaScript, etc. View part is actually completely responsible for displaying data. It takes data from the Controller and also sends back data to the Controller. It does not communicate directly with the Model.
Controller
The Controller in MVC is the base of MVC architecture. Every request comes first to Controller then Controller requests the required information from Model and then it sends that information (data) to View in various formats. It works as a communicator and validator between View and Model.
ASP.NET MVC
So, now what is ASP.NET MVC and how it is different from ASP.NET Web Forms?
ASP.NET MVC is based on the MVC design pattern which provides us the facility to create an application fast, easily and full control. It is not a substitute of Web Forms but it is a new technology which keeps you updated with new web technologies like HTML5, Ajax, Web API, SignalR, OAuth, Identity 2.0, etc. You don't need to learn these in order to learn MVC but you can use them inside MVC.
So, let's compare features of MVC and Web Form.
ASP.NET MVC vs Web Forms
| ASP.NET MVC | Web Forms |
1 | MVC focuses on separation of concern, i.e., there is no any fixed code behind page for every view. A view can be called from multiple action. | Web form based on functions and page behind code, i.e., there is code behind page for each view. You have to write code in that class related to this view only. |
2 | First request comes to controller and action, then view gets called. | First request comes to Page (View) then it will go to code behind page. |
3 | MVC provides HTML Helpers to create form controls. This is optional. You can use simple HTML controls also. | For everything in webforms, you have a server control. |
4 | There is no ViewState for state management in View. | Viewstate is used to maintain state of form in view. This also makes page heavy. |
5 | Good for SEO friendly urls. No need to map to existing physical files. | Earlier, this feature was not available in Webforms but now it is available. Although it is not that easy and it is optional. |
6 | We create partial views for reusable views. | We create user controls for reusable view or control. |
7 | It is very easy to use jquery and JavaScripts. Using CSS is also easy | It is a little difficult to use jquery and JavaScripts in web forms. It provides themes and it is difficult to manage design of server controls. |
8 | Maintaining Id of form controls are easy and you can fully control them when working with Jquery. | It is difficult to mange Id of server controls, you don't know adject id of server controls most of the time. Specially working with user controls. |
There are many other differences related to architecture because MVC gets created from scratch. Although it is inherited from the same library System.Web, it has all the functionalities which we have earlier.
Conclusion
If you are developing a new application, then definitely go with ASP.NET MVC because it will give all the flexibility you need for current and future web development. It supports very well with EntityFrameWork, WebAPI, OAuth, SignalR, Jquery, Ajax, AngularJs, CSS and other latest technologies.