Sync Framework Overview

Microsoft Sync Framework is a comprehensive synchronization platform that enables collaboration and offline access for applications, services, and devices. Sync Framework features technologies and tools that enable access to data from different locations, sharing of data, and taking data offline. By using Sync Framework, developers can build sync ecosystems that integrate any application with any data from any store, by using any protocol over any network. For example, personal information management (PIM) software can use Sync Framework to propagate PIM data updates to all participants. Business applications that share data such as documents can use Sync Framework to ensure that all team members receive document updates, and that any conflicts over concurrent updates are handled correctly. Media management software that runs on a personal computer and manages media on a mobile device can use Sync Framework to easily perform updates to the device.

Sync Framework Technologies

Sync Framework is made up of the following technologies:

  • Sync Framework core components These can be used to create synchronization providers for any type of data store.

  • Microsoft Sync Services for ADO.NET This can be used to synchronize databases for offline and collaborative scenarios.

  • Metadata Storage Service This can be used to store synchronization metadata in a lightweight data store.

  • Sync Services for File Systems This can be used to synchronize files and folders in a file system.

  • Sync Services for FeedSync This can be used to synchronize RSS and Atom feeds with data in a local store.

Benefits of Using Metadata

Sync Framework uses metadata that includes all the information that is required to perform synchronization. The metadata is small and efficient, and Sync Framework provides components that handle many of the tasks that involve metadata. The use of metadata keeps synchronization data type agnostic and helps balance freedom, interoperability, and simplicity. The following table lists and describes some metadata benefits that Sync Framework provides.

Benefit Description

Concise

Metadata is concise because it has no per-item version vectors, and still is enough for single- and multi-master synchronization.

Efficient

Metadata is efficient because it uses minimal change enumeration, even in loops.

Precise

Sync Framework uses precise conflict detection, without under- or over-detection and no over-sending of changes. This applies to both unstructured data such as files, and structured data such as detailed change tracking.

Flexible

Users can use any store and any technique for storing metadata, can add verbs to their own protocols, and can use their own techniques to optimize synchronization operations.

Interoperable

Metadata is agreed upon. Therefore, arbitrary topologies can be supported.

Easy

Sync Framework provides a standard toolkit. This handles many of the complexities of multimaster synchronization. The toolkit can also be customized to enable users to make changes to obtain even better performance.

Useful

Sync Framework manages as much metadata as is required. For example, an application can decide to handle only timestamps and to let Sync Framework handle versions, knowledge, and metadata storage. The application does not have to track deletions because Sync Framework computes them from a list. And the application does not have to track changes because Sync Framework computes them from hashes. Also, if it is necessary, Sync Framework can provide full multimaster support for legacy stores.

High-Level Architecture

The Sync Framework architecture allows for data to flow among any number of device, service, and application replicas by abstracting away the data store, transfer mechanism, and schemas into a set of building blocks. Sync Framework building blocks are the runtime, metadata services, and provider. The runtime drives synchronization among providers. Providers use the metadata services to process and store metadata.

The following illustration shows the high-level architecture of the Sync Framework. Notice that synchronization is achieved by exposing provider interfaces from a data store to the synchronization session object. For example, an address-book data store and a device data store both want to synchronize Public Contacts. The synchronization session connects the two providers and makes API calls to determine what has changed and what has to be applied by using the metadata services.

Architecture Overview

Sync Framework architectural overview

Runtime

The runtime drives synchronization by starting, hosting, and canceling the synchronization session. It also communicates status, conflicts, and errors to the client application. The runtime achieves synchronization on behalf of the client application by making requests to providers through a synchronization session object. Both managed and unmanaged interfaces provide access to the runtime. For more information, see Synchronization Applications.

Metadata Services

This component helps applications work with the synchronization metadata. It frees applications and providers from having to understand the inner workings and details of the metadata, such as knowledge structures. It also provides Metadata Storage Service, an optional metadata storage component for applications that do not have a logical location to store synchronization metadata. Metadata Storage Service uses a lightweight data store and runs in the client process. Both managed and unmanaged interfaces provide access to the metadata services. For more information, see Metadata Management.

Provider

A provider uses an interface layer to hide the complexities of its data store from the runtime. The provider is the main integration point into Sync Framework. Implementing a provider is the primary development task for synchronizing custom data. A provider can implement either a managed or an unmanaged version of the interface. For more information, see Synchronization Providers.

See Also

Reference

Microsoft.Synchronization

Concepts

Sync Framework Unmanaged Reference
Synchronization Applications
Metadata Management
Synchronization Providers

Other Resources

Microsoft Sync Framework