You should take a look at WCF data services, especially in .NET 4. While you have to create a data context class or classes to expose your objects with IQueryable publishing and IUpdatable implementation, you can take advantage of the support structure provided by WCF data services along with a standardized protocol (OData) for your payload.
In .NET 4 and Visual Studio 2010, WCF data services are becoming more acceptable and are being pushed by Microsoft as a good vehicle for accessing data for Silverlight applications.
I think this is at least worth checking out. There is a lot of information about this on MSDN, although I donβt think it organized very well in places. Here's a link to a section on MSDN when minimizing your own WCF data service using the built-in reflection provider. (The example only shows data search, since it is much simpler than updating data / inserting / deleting, but there is a link in the article on how to implement IUpdatable.)
Getting IQueryable through WCF data services should be pretty fast. IUpdatable will take a little longer (since you need to implement Insert / Update / Delete for each object). But as soon as you start and run it (which should not take too much time), you can then configure security settings, add your own maintenance methods and easily add additional functions and / or objects. This is a good structure for what you are describing.
Hope this helps.
David hoerster
source share