Difference Between ASP.NET WebForms and ASP.NET MVC

One of the frequently asked questions about ASP.NET MVC is that how is different from ASP.NET WebForms. Is ASP.NET MVC a replacement for WebForms.


Here are some points that I wrote in an article for www.dotnetcurry.com that differentiate ASP.NET WebForms from ASP.NET MVC:

ASP.NET WebForms


Uses the ‘Page Controller’ pattern. Each page has a code-behind class that acts as a controller and is responsible for rendering the layout.Uses the ‘Front Controller’ pattern. There is a single central controller for all pages to process web application requests and facilitates a rich routing architecture
Uses an architecture that combines the Controller (code behind) and the View (.aspx). Thus the Controller has a dependency on the View. Due to this, testing and maintainability becomes an issue.ASP.NET MVC enforces a "separation of concerns". The Model does not know anything about the View. The View does not know there’s a Controller. This makes MVC applications easier to test and maintain
The View is called before the Controller.Controller renders View based on actions as a result of the User Interactions on the UI.
At its core, you ‘cannot’ test your controller without instantiating a View. There are ways to get around it using tools.At its core, ASP.NET MVC was designed to make test-driven development easier. You ‘can’ test your Controller without instantiating a View and carry out unit-tests without having to run the controllers in an ASP.NET process.
WebForms manage state by using view state and server-based controls.ASP.NET MVC does not maintain state information by using view state
Relatively simple to learn and pickup. Works very well for developers who initially have trouble with the HTTP/HTML model and are coming from a similar WinForms oriented event model.There is a learning curve to understand the why, when and how of ASP.NET MVC.
Lesser amount of code is required to build webapps since a lot of components are integrated and provided out of the box. You can also use a lot of data controls provided out of the box that rely on ViewState.Since the application tasks are separated into different components, amount of code required is more. Since ASP.NET MVC does not use ViewState, you cannot use Data controls like GridView, Repeater.
Works very well for small teams where focus is on rapid application developmentWorks well for large projects where focus in on testability and maintainability

I hope devcurry.com viewers will find this table useful. The entire article can be read over here ASP.NET MVC - Some Frequently Asked Questions

Will you give this article a +1 ? Thanks in advance

About The Author

Suprotim Agarwal

Follow him on twitter @suprotimagarwal.


Anonymous said...


Hiran said...

Hi it really helped me to learn the differences between those. Are there any good resources to learn ASP.NET MVC 2.0.

Suprotim Agarwal said...

Some ASP.NET MVC resources:

ASP.NET MVC Free Training

ASP.NET MVC Articles

haris said...

Hello Evey One,

I am very new to ASP.NET MVC.
Can you please tell me how to create TreeView Dynamically at runtime with user input in ASP.NET MVC.

where User should able to create Root, Parent and child nodes.
User should be able to Add , edit, delete Nodes.

Please post code here or send me at this email. haris105@hotmail.com

Thank you in adnavce.

Shazad said...

I haven't use ASP.net MVC. But have worked on ASP.net webforms and Classic ASP 3.0. What I understand from this article, ASP.net MVC is some what similar to ASP Classic. So why they are going backward as it has its cons.

Bartek said...

In my opinion, the question is becoming blurred with a lot of the cool features of MVC making their way into Webforms. ASP.NET 4.0 added URL Routing, reduced ViewState, and greater control of the HTML mark-up produced by many ASP.NET controls, now the next version of Webforms will incorporate many more MVC features into Webforms. http://bit.ly/dNhBd8

Noushad said...

Very clear

Shreekanth Gaanji said...

It was a lear explination and well explained.