I attended a Microsoft Webcast on ObjectSpaces, called ADO.NET ObjectSpaces - Level 400. It was a little dry and hard to watch, not because of the presenters, but because there is nothing less exciting than looking at XML Mapping Files and OPath, which is an object query language.
Personally, I think ObjectSpaces, which is an O/R Mapper that sits on top of ADO.NET, is a little late in the game. It is expected to be released in about a year and it is still not clear as to whether it will be a part of ADO.NET 2.0 or whether it will be a separate product (I vote for a separate product). There are some very good 3rd party O/R Mappers and business frameworks out there *NOW* that are much more intuitive in nature. Although I think ObjectSpaces will help to raise the level of awareness of object design and O/R Mapping, I am not sure it will take off even if they end up releasing it for free ;) Of course, never underestimate the popularity of free tools if they do release it for free!
Although this is a personal preference, I do appreciate that ObjectSpaces doesn't require the developer to derive his/her object class from a base class, such as Developer Express' eXpress Persistent Objects for .NET (XPO). This is not a dig on XPO. In fact, the product looks pretty unique in many ways. I just prefer not to derive my classes from a required class.
I also prefer not to use required attributes on each class that help the O/R Mapper decide how to persist objects as well as relate classes (one-to-one, one-to-many, etc.). XPO as well as EntityBroker (although this may change in EntityBroker2004) require attributes (again, no dig). ObjectSpaces prefers to use separate XML Mapping Files, which although not ideal, are more intuitive (in my humble opinion) than attributes.
At this time, I prefer to have my O/R Mapping Layer generated at design time based on my database tables, similar to LLBLGen Pro, thus eliminating the need for manually creating attributes and XML Mapping Files. By generating the O/R Mapper at design time, you have more control over the layer as well as hopefully performance improvements of not having to use Reflection or other dynamic learning of class relationships and persistence information.
I have to admit though, by using XML Mapping Files, you don't need to dig into code when adding fields or making changes to the underlying database. You simple change the XML Mapping File, which could be auto-generated on the fly, and be on your way. Geez... Is the .NET Framework the bomb or what!?
Anyway, I will leave you with an interesing slide I grabbed from the webcast that compares using ObjectSpaces vs. DataReaders and DataSets and the strengths and weaknesses of each. I shrank the slide a bit to get it on the page, so hopefully you can see it (I can, anyway). If not, check out the webcast.
