At Tech-Ed in Barcelona this year Soma Somasegar announced the Microsoft Sync Framework. It provides a set of tools and best practices for enabling online/offline and sharing applications with any kind of data store and over any kind of transport channel.
At the core the SF has a synchronization runtime that takes care of the main sync’ing algorithm and provides a number of hooks to allow system-specific providers and custom conflict handling.
The sync providers enumerate or apply changes for their specific client system data store and can be built to transform between different schemas of the source and destination systems. In addition to the data store they also need some place to store the metadata required for synchronization.
Three providers are currently available from Microsoft:
- Sync Services for ADO.net: Similar to RDA (Remote Data Access) this provider will allow synchronizing databases. On the client side the SQL Server Compact Edition is utilized.
- Sync Services for File Systems: Check out the new version of the SyncToy (currently beta) which allows easy change tracking between folders.
- Sync Service for FeedSync: formerly known as SSE - Simple Sharing Extensions, this provider allows the communication of sync changes between hosts using RSS/ATOM feeds.
The SF targets a number of participants: full (Anywhere you can run your own custom sync executables - PCs…), partial (dumb devices without custom code but they can store metadata - USB drives…) and simple (consume changes but cannot sync own changes back to the partner - RSS readers).
The runtime itself is simple. It runs on one host and talks to two providers. The runtime itself does not work in a distributed environment. If you want to synchronize across a communication channel of some kind you will have to do it yourself. For example by writing a proxy provider that communicates with the actual provider (implemented as a WCF service).
In the next few weeks I will be posting a set of walk-through articles on the Sync Framework, so check back for more.
More information about the sync framework at http://msdn.microsoft.com/sync.