Wednesday, April 6, 2016

Difference betweeen ASP.NET WebForms and ASP.NET MVC?

Asp.Net Web Form follows traditional event driven development model for creating web applications.
Asp.Net MVC is a light-weight framework that separate an application into three main components i.e. Model, View, Controller (MVC) so it follows MVC pattern based development model for web application development.
ASPX page (.aspx) is tightly coupled with code behind files (aspx.cs/aspx.vb file) .So In Asp.Net web Forms there is no separation of concerns (SOC). So it’s not possible that multiple developers can work on one section i.e. aspx and another on code behind file at same time. So less support for parallel development.
 Asp.Net MVC pattern is loosely coupled and provides very clean separation of concerns (SOC). View and Controller are independent of each other. So one developer can work on Controller, at the same time other on View and third developer can work on Model. This is called parallel development.
Because of this tightly coupled behavior unit testing in Asp.Net Web Forms becomes really difficult.
Each component in Asp.Net MVC can be easily tested because MVC is loosely coupled. So it provides better support for test-driven development (TDD) and Enhances testability.
Asp.Net Web forms doesn't require much prior knowledge of HTML, JavaScript and CSS.
Asp.Net MVC requires detailed knowledge of HTML, JavaScript and CSS.
Asp.Net Web forms provides limited control over HTML, JavaScript and CSS.
With MVC we have full control over HTML, JavaScript and CSS.
Asp.Net Web forms allow rapid application development (RAD) of web applications because of the availability of robust toolbox having lots of web controls and many control libraries.
Asp.Net MVC might be bit slower to develop a project than Web Forms (due to its SOC nature)
In Asp.Net web forms there are ViewState and Postback events. Large viewstate means increase in page size since viewstate is stored in the page itself thus bit slower loading time and performance degrades.
MVC is stateless, so no ViewState and PostBack events so light weight, quick loading time and gain in performance.
URLs are not much SEO friendly (though this is now possible in ASP.NET 4 as well), so affect SEO.
Use of RESTful URLs makes MVC is more suitable to Search Engine Optimization as we can control the URL and the HTML to a greater extent.
ASP.NET Web Forms model follows a Page Life cycle.
Asp.Net MVC doesn't follow Page Life cycle like Web Forms instead request cycle is simple in ASP.NET MVC model.
Asp.Net Web Form have no HTML helpers                 
Asp.Net MVC has HTML helpers
Asp.Net Web forms have rich server controls and ViewState, so developers can develop web applications with minimal HTML and JavaScript skills,thus bit easy to learn.
Because ASP.NET MVC doesn't support server controls, ViewState and event driven programming mode so it is very difficult framework for new developers to learn and work on MVC pattern.
Asp.Net Web Form has Master Pages that provides for consistent look and feels across all the pages of web application.
Asp.Net Web Form has Layouts for consistent look and feels. Default name of the layout is _Layout.cshtml and stored in /Views/Shared folder.
Many server controls provided by visual studio toolbox like GridView and DataList, Repeater etc has easy data binding capabilities so reduces lots of efforts and codes being written.
ASP.NET MVC doesn’t have server controls instead it has html input controls.
Asp.Net allows code re-usability through User Controls.
Asp.Net MVC has Partial Views for the concept code re-usability.
Asp.Net Web forms will be good for small scale applications with limited team size.
Asp.Net MVC will be best suitable and recommended for large-scale applications where different teams are working together.
Asp.Net Web Form is not Open Source
Asp.Net MVC is an Open Source
Asp.Net Web Form Follows Web Form Syntax
Asp.Net MVC follow Custom syntax (Razor as Default)  

Note: Source From Different Sites