I'll be doing some in-depth tutorial posts about the
new ASP.NET MVC framework in a few weeks once the bits are available for
download (in the meantime the best way to learn more is to watch the video of my Alt.net presentation).
A few quick details to share in the meantime about the
ASP.NET MVC framework:
It enables clean separation of concerns, testability, and
TDD by default. All core contracts within the MVC framework are interface
based and easily mockable (it includes interface based
IHttpRequest/IHttpResponse intrinsics). You can unit test the application
without having to run the Controllers within an ASP.NET process (making unit
testing fast). You can use any unit testing framework you want to-do this
testing (including NUnit, MBUnit, MS Test, etc).
It is highly extensible and pluggable. Everything in
the MVC framework is designed so that it can be easily replaced/customized (for
example: you can optionally plug-in your own view engine, routing policy,
parameter serialization, etc). It also supports using existing dependency
injection and IOC container models (Windsor, Spring.Net, NHibernate, etc).
It includes a very powerful URL mapping component that
enables you to build applications with clean URLs. URLs do not need to
have extensions within them, and are designed to easily support SEO and
REST-friendly naming patterns. For example, I could easily map the
/products/edit/4 URL to the "Edit" action of the ProductsController
class in my project above, or map the /Blogs/scottgu/10-10-2007/SomeTopic/ URL
to a "DisplayPost" action of a BlogEngineController class.
The MVC framework supports using the existing ASP.NET .ASPX,
.ASCX, and .Master markup files as "view templates" (meaning you can
easily use existing ASP.NET features like nested master pages, <%= %>
snippets, declarative server controls, templates, data-binding, localization,
etc). It does not, however, use the existing post-back model for interactions
back to the server. Instead, you'll route all end-user interactions to a
Controller class instead - which helps ensure clean separation of concerns and
testability (it also means no viewstate or page lifecycle with MVC based
The ASP.NET MVC framework fully supports existing ASP.NET
features like forms/windows authentication, URL authorization,
membership/roles, output and data caching, session/profile state management,
health monitoring, configuration system, the provider architecture, etc.