One of the newest toys to come out of the .NET fun factory – actually, it’s still in the preview phase – is the Microsoft Sync Framework. Its goal is to provide a common framework to assist you as a developer in all your synchronization tasks. This includes the basic case of synchronizing files on a laptop with an office desktop, but also synchronizing two databases, e.g. on a handheld device and a database server.
“The Microsoft Sync Framework is a comprehensive synchronization platform that enables collaboration and offline scenarios for applications, services and devices. Developers can build sync ecosystems that integrate any application, any type of data, using any protocol over any network.”
With this framework Microsoft is obviously responding to two (connected) trends:
1) Users more and more use different devices (desktop, laptop, pda, smartphone…) to perform the same tasks and need to keep their data synchronized between all these pieces of hardware.
2) The growing market of so-called OCAs, or Occasionally Connected Applications. This refers to applications that use a server but are typically also used in situations where no network connection is available. This implies that (part of) the database needs to be “taken offline” (moved to the device that’s running the application) and that afterwards changes on that local copy need to be integrated and reconciled with the server database.
The framework should enable developers to respond more easily to these trends in their own applications by providing a standard synchronization model and libraries for typical tasks. Details can be found in the MS Documentation. In particular, most of the relevant classes are in the Microsoft.Synchronization namespace.
More links:
Download of the CTP2 release
Introduction to the Microsoft Sync Framework Runtime
Sync Services for File Systems
Tutorial – Microsoft Sync Framework Basics
SQL Express – Client Synchronization Sample