A week or so ago (??) I learned at Haacked.com, with Phil Haack's news that he was joining Microsoft, that Microsoft has been paying attention to the recent successes people have been reporting with MVC/MVP with ASP.NET. I'm still scratching my head wondering what how on earth you can string these two models together, but I'm glad to learn that Microsoft has been paying attention to what has been going on at the Castle Project with MonoRail, et al, among other things.
What had me most concerned about MVC/MVP was that, on the web, everything starts with that @#$% URL which infers a reference to some applicaton state in some point in time, or else a specific pointer to some data, and with ASP.NET a URL generally maps to a Web Form, with some predetermined template with some tricks up its sleeve to allow for things to show and hide and move around based on postbacks and/or AJAX calls. In other words, classically, on the web, the view is predetermined, and it already controls everything, rendering MVC/MVP a concept limited to the lifetime of the rendering of specific controls that happen to be on a template (an ASPX page).
It looks, though, like HTTP handlers are being put into place so that URLs don't map to a Web Form but rather an action to perform so that the MVC controller controls the output rather than some file-mapped template.
While I haven't peeked enough into MonoRail to know whether it does something similar, I must say that I now officially don't know what I'm talking about when I pooh pooh MVC for the web. I'm really looking very much forward to seeing what Microsoft ends up with. Jeffrey Palermo's blog indicates that this new initiative has these goals:
- Natively support TDD model for controllers.
- Provide ASPX (without viewstate or postbacks) as a view engine
- Provide a hook for other view engines from MonoRail, etc.
- Support IoC containers for controller creation and DI on the controllers
- Provide complete control over URLs and navigation
- Be pluggable throughout
- Separation of concerns
- Integrate nicely within ASP.NET
- Support static as well as dynamic languages
I'm impressed. So much of this is so .. non-Microsoft-like .., it's like they were working in a box for so long. I had grown so accustomed to Web Forms with all its constraints, now I have to re-learn everything all over again. I hope there will be a special certification track for this ...