Over the last couple weeks, I've seen some announcements in the blogosphere that tell me that some winds of change are a-blowin', and we're going to see some really positive developments in ASP.Net tools and techniques in the coming months and years. These improvements aren't about adding capabilities, they're about making the capabilities we've already got accessible to more developers.
The C# / ASP.Net platform circa Fall, 2007 is astoundingly capable. If there's something you can't do with this platform, you just haven't tried hard enough. But this power too often comes at the price of coding complexity, or just as bad, coding overhead. If I've got to write seven layers of infrastructure to get something done, I'm not too excited about doing it anymore.
The promise of a platform like .Net is that it should support both low-level code jockeys and higher-level applications developers who are working with the business on a daily basis, because the end-game is business productivity.
Enough preamble. First development: Scott Guthrie's ASP.Net MVC Framework. If you've read this blog for any length of time, you'll know that Scott's blog is a must-read. His announcement of an MVC framework for ASP.Net is major news, though it was easy to miss. So what's the big deal? Lots of people have done some form of MVC in ASP.net -- why's this one any different?
The simplest answer is that this one, with any luck, will be the one MVC Framework to Rule Them All. In short, there's a lot of value in having this become a standard for ASP.Net development just so that people don't have to worry about trying to do this themselves anymore. Unless someone has needs so completely out-of-the ordinary that this framework is off the table, it's in as a default. Fewer decisions = more productivity.
As a second-order benefit, I hope to see UI development move away from the "one big ASPX file per web page" model, toward a more component-oriented view. Think about the way a screen is constructed in a CMS or something like Facebook or Myspace. This is a whole lot more modular and flexible, but it'll require a shift away from the way most pages are put together. Go read this and see if it sparks some ideas.
The second big news flash is related. There's a guy named Rob Conery who's been working on an open-source data-access toolkit called SubSonic. I almost referred to SubSonic as an ORM, but I think that wouldn't quite capture the spirit of SubSonic. In any event, the news here is that Rob is going to work for Microsoft. He'll be working in Scott's group, in fact.
Again, so what? Again, it's about throwing enough weight and credibility behind SubSonic that it becomes an acceptable, if not brain-dead architecture choice.
Let me explain. There are lots of other tools and frameworks out there that compete with SubSonic on some level. I don't care if one of them is seven percent faster or requires eleven percent fewer lines of code. What I care about is that SubSonic (and many of the other tools in this space) are better than working with ADO.Net alone. But while this product space is fractured and chaotic, none of these tools will be a clear leader.
For me as an architect, that means that every time I'd like to use one of these tools, I've got to explain to someone that (1) it's a really good idea, (2) it's better than any of the other seventeen alternatives - including scratchbuilding, and (3) it's going to stand the test of time. Let one of these tools win, and that argument goes away, and I can get on with building systems for business users.
And that makes me happy.
So all of this stuff is a done-deal, right? No, of course not. We'll have to watch these developments play out a bit. Scott's blog targets the first-half of next year for the MVC Framework. Rob is at Microsoft now, but we won't see any industry consolidation around SubSonic for a while yet. But Microsoft's endorsement, even if only implicit, gives SubSonic some momentum. I can't wait to see these bits working together.