Here's another gem from Scott Guthrie. I saw the announcement for this technology yesterday, and I completely missed how big it was. I saw Scott's post this morning, and watched the video on a whim, and I was absolutely stunned. This is huge.
The video that accompanies the blog post is done by David Ebbo, and it is absolutely amazing. The "zero-to-website" time on this demo is flat-nothing, and there's tons and tons of sophisticated behavior shown in this demo that you'll have to see to believe.
Honestly, you'll appreciate the functionality shown here most of all if you've ever had to implement any of this stuff the hard way. Handling customized grid cell rendering, editing, and validation, dynamic generation of columns, in-cell dropdown boxes, and so on -- it's true that these things are getting easier all the time, but it's generally still messy by the time you're done. This demo knocks this stuff out without breaking a sweat.
You may also be aware of any number of code generation tools that will also whip out a working web application based on a database schema, but I think you'll agree that the approach and the execution here is really different. Some of the scaffolding concepts here will be familiar to Ruby-on-Rails developers -- it's not a code-generation experience as much as a framework experience. Once this site is made aware of your data, stuff starts happening automatically. Probably the closest equivalent to this technology in the .Net world would be Subsonic, which does some of this scaffolding at the DAL and Business-Logic levels, but doesn't quite measure up to the Dynamic Data WebSite in terms of UI flexibility.
I haven't had a chance to play with this yet, but if there's one area I think could be a weakness, it's going to be the rather direct link to the database. This is the sort of thing that's going to show up as you start trying to work this into enterprises that are particular about how their applications' tiers are implemented, and when you start hitting really complex scenarios involving composite objects.
As an example, Rocky Lhotka's CSLA Framework is much more enterprise-friendly. Its ability to deploy flexibly into single-tier environments and multi-tier environments, and to change the interconnect protocol with config-file changes lets you deal with demanding deployment scenarios. Its use of "real" business objects also provides a helpful abstraction layer when you need to stitch several database concepts together to make a business object.
Since the Dynamic Data WebSite depends so completely on Linq, it's pretty static in its deployment model. For the time being, this is going to rule out deployments where a separate business objects tier is mandated for performance or scalability reasons.
Part of the value of a technology like this, though, is to demonstrate concepts that might be of value elsewhere. The scaffolding abilities, use of partial classes and partial methods, and aggressive use of custom attributes are pretty cool ideas that might jump-start some other tools, too.
Additional reading on Linq's static deployment model: