ADO.NET Data Services Is About to Go Offline
ADO.NET Data Services, previously known as Project Astoria, will receive offline capabilities in the near future. That means applications could be developed to synchronize their data, then use it in an offline fashion.
Project Astoria, which later became ADO.NET Data Services and was included in Visual Studio 2008 SP1, allows developers to access databases through a service proxy, simplifying database access and data retrieval/storage. Saaid Kahn, Program Manager on the Visual Studio Pro Tools team, explains in an interview how to create an n-tier application accessing a database using ADO.NET Data Services.
Astoria uses RESTful services and offers an URI as service access point. Currently, data can be accessed only online, but there are plans to release an alpha version which will allow offline data access soon, and will make use of the Microsoft Sync Framework. The purpose of the alpha release is to collect feedback to see if the direction followed is the right one and is planned to happen this year, according to Pablo Castro, a software architect at Microsoft.
Pablo has outlined some of the scenarios they are considering in going offline with ADO.NET Data Services:
- Synchronization with intranet databases
- Synchronization with cloud based data
- Data consolidation. Data could be provide by several services retrieving it from various sources: databases, cloud, custom repositories.
Pablo has revealed the guidelines followed by their team:
We will stick to a simple and open interface. ... Anybody with an HTTP client and enough knowledge of our sync strategy should be able to synchronize with a data service.
Data independence will remain there for sync as it is already for online access. ... If the data service is sync-enabled you can sync with it, no matter what backs it.
We are targeting data services for structured stores and business applications. That implies a certain level of sophistication in the shape of data, such as assuming cross-item dependencies, store-level and application-level constraints that dictate consistent states of data, the need for making partial progress during synchronization, etc.