Friday, December 7, 2007

Volta & Other ASP.NET Miscellany

Erik Meijer posted about Volta on Lamda the Ultimate.  Last I heard from him, he was working in the VB.NET team as a language designer, pushing to make VB.NET a more dynamic language a la Ruby (kind of like it was before it came to .NET).  Now, he’s working under Ray Ozzie in Live Labs, an incubator division started to get things done and shipped without having to bear the crushing weight of being the progeny of all things Microsoft.  For we .NET developers, this is an exciting time, because it means faster innovation from Microsoft on the web.  Erik is a fan of dynamic languages and aspect-oriented programming, and Volta reflects that.  Interestingly, I believe Volta is the first Microsoft product outside of Microsoft Research to utilize bytecode level AOP injection.

There are some other interesting things happening with .NET 3.5 in the web space besides Volta.  First, Scott Guthrie and some new folks on the ASP.NET team are working hard on ASP.NET MVC.  Yup, now Microsoft is throwing their hat into the MVC arena.  Here’s a nice round-up of links about the new framework.  How this will compare with the Spring.NET web framework or the Castle Project’s MonoRail remains to be seen.  From what I’ve seen so far, ASP.NET MVC is motivated by a desire to support TDD for ASP.NET web applications and to provide a proper MVC.  I think the major difference among this implementations will be how they implement IoC.  Spring loves XML configuration; MonoRail is about convention over configuration; and ASP.NET MVC seems to behave more like Guice in that the configuration is done in code.  Personally, I think Guice is really awesome, so I have high hopes for ASP.NET MVC, and I hope it facilitates Presenter First.

On top of all this, of course, there is Silverlight, and its more familiar desktop-style development model.  The web becomes just an application delivery platform for Silverlight applications.

And if all these different ways of building web applications aren’t variety enough for you, there are the new platform innovations of .NET 3.5.  Language Integrate Query (LINQ) abounds allowing you to LINQ to SQL, LINQ to Objects, LINQ to DataSets, and LINQ to XML.  I expect you’ll see LINQ to NHibernate, as I know LINQ to LLBLGenPro is in development.  LINQ to SQL comes with a proper ORM tool built into Visual Studio 2008, so bringing ORM to clients has never been easier.  To make LINQ work, the platform needed some enhancements.  Besides the nullable types, static classes, and anonymous delegates that came in .NET 2.0, we get anonymous types, extension methods, and lambda expressions in .NET 3.5.  Oh momma!

Yes, the .NET development tool stack is getting just as confusing as Java’s, if not more so since you could write your applications against these frameworks in IronRuby, IronPython, Boo, VB, C#, and many others.