ASP.NET MVC framework
This was an unbelieveably exciting session at the ALT.NET conference. Scott Guthrie demo-ed an upcoming ASP.NET MVC framework. It rocked!
- Separation of concerns, unit testing, red/green TDD, maintainable
- Extensible and pluggable
- Enable clean urls and HTML
- Integrate nicely within ASP.NET + .NET core code, support static + dynamic languages
Everything is based on an interface, including IHttpRequest and IHttpResponse, which makes them mockable. Jeffrey has a good overview here.
I am not an ASP.NET developer. I am a Classic ASP developer. I have watched my co-workers develop ASP.NET (using webforms) and found it overwhelming and confusing. I have been recently watching Ruby on Rails developers, and I have been jealous. Templating that makes sense, clean separation of controller and views, explicit and clean HTML, and testability. At first look, it looks like Microsoft has encapsulated those same principles in their new framework. I’m stoked!
Microsoft has shown that they are listening to the community. They have a framework that understands that we may want to use our own tools. We can use this framework, but also use tools like Castle Windor, StructureMap, RhinoMocks, nUnit, jQuery, etc. And we can use these tools without friction from the framework. And the framework is promoting many of the same principles and values as the ALT.NET community.
Something that really stood out to me was that Scott and his team had obviously spent time looking at other frameworks in the market. He talked about Rails, Django, MonoRail, etc. And he learned from them. He understood their strengths and weaknesses, and used that knowledge when creating this new framework.
One of my big takeaways for me was some hope for moving Classic ASP apps into this new ASP.NET MVC framework. Moving from Classic ASP to ASP.NET (webforms) seemed unsurmountable. But now, the path seems much more achievable. We could add a dynamic route for .asp pages, and handle them as we wish. There may still be some challenges in sharing of Session state, but I now have some hope. Perhaps make the existing pages work in the new framework, and then slowly start instilling a separation between the layers, over time. New development could follow the new pattern, and as old pages are modified, they could be adapted into the new pattern as well. I spoke with ScottGu about this, and he acknowledged that it seemed like a reasonable idea. He told me to drop him an email in a few weeks to follow up and discuss. Be sure I will.