Updated Blogroll

ScottWpointed out that Martin Fowler has started a blog (or as he calls it, a ‘bliki’). Rss Subscribed. Martin also provides a feed for updates to his site.

I took the opportunity to update my blogroll. Many new MSFT bloggers, a few new non-MSFT bloggers. The two lists are about the same length (for now).

Strongly Typed WMI and AD Access

Scott W and Early Adopter have discovered the WMI Management Extension for VS.NET 2003. This was available for VS.NET 2002 as well. One of the cool features is generating strongly typed classes for accessing WMI information.

There’s a similar Server Explorer extension for Active Directory. Unfortunately, it only works with VS.NET 2002 so far.

Not to leave the loosely coupled XML crowd out, there’s now Directory Service Markup Language (DSML) support for Active Directory. Includes a SOAP listener. Cool.

XML Infoset vs Object Graphs

Following up on my XML is not a Deserialized Object Graph post, I was thinking about entity classes from RUP. The official definition (from the RUP manual) for entity classes is: “An entity class is used to model information that is long-lived and often persistent” – i.e. stuff we’re going to stick in the database, XML files, etc. In weblog terms, entities are posts, comments, trackbacks, etc. In my experience, these entity classes have little business logic – mostly validation code. The code that will act on this entity are encapsulated within control classes. Control classes are tightly related to use cases. Typically, a one-to-one relationship between use case and control class is a good first order approximation. Again, in weblog terms, the “create post” use case would be implemented as a control class that takes an entity class instance and writes it to the persistent store (database, XML file, etc)

If the vast majority of business logic goes into control classes while the entity classes are primarily data containers, why can’t we just go all the way and make our entity classes conform to the XML Infoset? Expose them via XmlReader/Writer or XPathNavigator (and some as yet undefined interface XPathUpdatable). This way we’ll have parity between the entity classes local to our application and the XML messages we send and receive as we interact with other web services. XML serialization attempts to do this by unifying everything as strongly typed objects. But I’d rather unify around infoset, since that’s what’s going to be consistent across platforms, vendors and technologies, rather than typing systems.

Matrix Desktop Enhancements

I downloaded the cool Matrix animated wallpaper and screen saver that I read about on Sean Alexander’s blog. I thought it was interesting that the animated wallpaper configuration utility has a “Hire the Developer” menu item that basically was a prose version of his resume.

ASP.NET Version Switcher

One of the very few annoying things about ASP.NET is that there is no convenient binary in which to store CLR version metadata for side by side execution. Therefore, you have to use the command line ASPNET_REGIIS utility. Or at least, you had to until Denis Bauer built the ASP.NET Version Switcher utility. I’ve added it to my tool list.