Today at the ALT.NET Conference, ScottGu let out a big secret, MVC for ASP.NET is on it's way. No I wasn't there, though with Twitter you don't have to be ;) You can read more about it here, here and here and on Brad's Twitter feed here. Over in p&p we've actually known about what was coming for a while, but like all good secrets at Microsoft, we weren't allowed to kiss and tell. More than knowing about it, a few guys on my team most notably Chris Tavares, and Michael Puleio actually participated in the design.
Initially there was an ounce of skepticism, but so far from what we've heard, we are all impressed with the direction. Many Kudos to Scott Guthrie for making a monumental change to the platform at a time when the community has been asking for it.
For those that don't know about MVC, MVC stands for Model View Controller. If didn't know about MVC, then it's a pattern that's not new and has been around for almost 30 years having originated out of the Smalltalk community. There are also many successful implementations on the web including the Struts framework, Java Swing, Tapestry and more recently Ruby on Rails and Monorail for ASP.NET.
MVC (Courtesy of Martin Fowler)
Essentially MVC shifts the focus from the Page to the Controller. The Controller is responsible for serving up the right Page (View) based on an Action. Controllers and actions are exposed through URLs. In other words in MVC the request hits the Controller first before any Page has been instantiated. This is very different than the current ASP.NET model in which the Page is the entry point. Another key aspect of MVC is the Model. The Model represents the domain object. The View renders directly off of the model which it has an inherent reference to. The same Model can be reused across multiple views.
So what's the big deal?
Does this mean you need to radically change the way you develop with ASP.NET? Well Yes and No. Yes if you want to take advantage of the new framework, No if you don't. The new framework is an add on to ASP.NET and not a replacement. This means the ball is in your court, and no one is forcing you to do anything.
What about WCSF? Well the simple answer is at this point in time we don't have one :) However as we are committed to aligning to the platform, we will be working closely with the MVC.NET guys to see what a WCSF / MVC world looks like. Many of the capabilities we provide in WCSF like Dependency Injection, Separation of logic, appear to be inherent in MVC. As this is an add on to ASP.NET and not a replacement, I can assure you this is not another case of Acropolis. WCSF will be here for a long time.
In summary with MVC your web applications should be more maintainable, more reusable, and more testable. I know, I know you've heard such promises before. However in this case MVC has stood the test of time so that in itself is certainly telling.
I am sure it's going to be an interesting ride, stay tuned!