One of the most exciting technologies being developed by the ASP.net development team headed by Scott Guthrie is ASP.net MVC.
ASP.net MVC is a framework that extends (and even modifies) ASP.net to leverage the MVC design pattern for building web sites that are highly robust, usable and testable. Scott gave an excellent description of what ASP.net MVC is going to look like in his blog.
Scott has followed up with 4 delicious blog posts that contain step by step tutorials that shed light on key aspects of ASP.net MVC. You can experience these yourself by downloading and installing the second preview version of ASP.net MVC that is already available from Microsoft. I heartily recommend it – it’s an eye opener.
I think this technology is about to introduce a sea change to the way we build ASP.net applications. The most profound change is that post-backs are completely out of the picture. A page no longer posts back to itself. Pages (views actually) now post to controller classes and it is these separate controller classes that receive the data and process it. This means the UI (the page) and the business logic (the controller) can be developed and tested individually.
But wait, there;s more! 🙂 A powerful URL rewriting engine that makes the page structure of a site easy to handle and free of hard coding. Also, querystrings and form data are parsed into server side arguments automatically, in the spirit of “convention over configuration”.
Even as a devoted ASP.net developer I’ve always lamented the cumbersome attempt that Microsoft has made originally in it, to mimic the WebForms interaction model by introducing the post-back mechanism and the viewstate based server side events model. If, like me, you’ve yearned for a lighter, more disciplined development approach for web applications, then keep your eyes on ASP.net MVC. It should reach RTM by the end of 2008.
Those of you attending Tech-Ed Israel 2008 alongside me, be sure not to miss Noam King’s “DEV339 – Sexy Web Development with ASP.Net MVC and Dynamic Data Controls” talk at the event.