I am looking for a framework to drive development for a new site to be written in ASP.NET 2.0. In my search, I have been reading up on implementing MVC in ASP.NET. It seems that the consensus is that the current MVC implemented in ASP.NET is page based using a front page controller pattern, not application based, making the need for integrating a true MVC pattern a necessity. The implemented Java version of the MVC, known as MVC2, uses Java Beans for the model, JSP's for the view, and a Servlet for the controller. Java’s version is widely accepted, while one solution for ASP.NET has yet to emerge.
I am looking for a framework for ASP.NET that compares to STRUTS, Expresso, and Maverick for J2EE. I have seen a few mentioned, and read further on others. There is a Maverick.NET, but I have not seen much development on it since 2003. Microsoft has introduced the User Interface Process (UIP) Application Block , which is based on MVC, where the model's independency allows for it to be built and tested separately from the view. Natty Gur has a project leveraging MVC2 and ASP.NET, known as NWAF, but this does not appear to be availible at this time. Finally, the last option I found is Castle's MonoRail, which is an MVC web framework inspired by Ruby on Rails.
MVC to me is basically an N-Tier architecture. Three divisions, model, view and controller, where the system can replace any piece with a new one, and remain functional. The controller is a contract, and both the view and model must abide by it. If this is implemented properly, the ability to swap an html view for a smart client view should be available. At the same time, the model should also be interchangeable.
A few observations up to this point. One can argue that ASP.NET uses MVC, and the page-codebehind relationship is an example of it. Decoupling the presentation layer and domain logic becomes more of a task in ASP.NET. One can also argue that ASP.NET does not use MVC, and in order to do so, three distinct layers need to be created representing the model, view, and controller, where the page-codebehind is the view that accesses the controller. Implementing MVC in ASP.NET will require detailed attention to the three divisions, specifically, following the rules of the MVC paradigm. Whereas, if using a pre-built, MVC framework, breaking the rules of the MVC becomes more difficult. Depending on the nature of the project, using MVC may or may not be the most desirable solution.
At this point, I am most interested in MonoRail and Microsoft's UIP Application Block. Are there any other frameworks out there for ASP.NET that implement the MVC pattern?