HowTo: Basics of ASP.NET MVC or why MVC?
A while ago I blogged about some ASP.NET MVC stuff, but why should I (and you) care about ASP.NET MVC?
ASP.NET MVC is a great and extensible framework for building web applications and is a alternative to the ASP.NET WebForms model.
Tell me more about "MVC"!
MVC stands for "Model-View-Controller", which is a very old (but still very useful) design pattern. This design pattern will split your application in 3 different parts ("model", "view", "controller"). "Seperation of concern" is one of it´s main benefits.
Short description of these parts:
- "Model": Represents your application data/model and has no(!) business logic
- "View": Just display the given viewdata (this could be a normal HTML page or JSON/RSS data)
- "Controller": The controller represents the business logic and create the view data and send it to a view.
A good example of an MVC application is the web browser.
What is so "bad" about ASP.NET WebForms?
The "viewstate" is one feature to hide the stateless nature of HTML, but it can make your web application very slow and makes you crazy. The "WebForms" model include a very complex lifecycle and it´s important to understand this to work with ASP.NET WebForms.
In my opinion it is too complex and the framework should embrace the nature of HTTP and don´t hide it.
Disclaimer: If you feel comfortable with WebForms, you have no reason to change to MVC – MVC is only on option.
What are the benefits of ASP.NET MVC
MVC is a very testable framework and you get full control of the rendering process. You can add functionality if you want, because MVC is very extensible and you can create a clean, DRY, testable web application.
Phil Haack (the program manager of ASP.NET MVC) did a great presentation at the PDC.
Things that you´ll maybe missing in MVC
Many ASP.NET controls use the postback-functionality. This function will not work well together with the MVC framework. Phil Haack did also 2 podcasts on HerdingCode and tell some thought about "the control story in MVC":
If you have questions, please add a comment (and if my english really suck please let me know ). This blogpost should only provide basics – other posts are planned.