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.

Small WSS RSS Update

I’ve made a private update to WSS RSS. The new build supports both dc:date and pubDate. Sorry Don, not enough news aggregators grok dc:date yet. Also, the new version filters expired items from the RSS feed. I’m not releasing this build – I don’t think 5 lines of code qualifies as a point release. If you want it, email me. Otherwise, I’m working on have UI support in v0.4.

Web Part RSS Client

I’m looking forward to seeing Simon Fell’s RSS Web Parts. Makes a nice addition to WSS RSS (which does work in SPS as well). I haven’t had any time to pick through the new .NET Web Parts technology – I’m hoping Simon releases code for his RSS web parts.