In addition, they also have to maintain synchronization metadata and the state of the data store, so that changes can be enumerated quickly.
The metadata is maintained for every instance of the data store (replica) that the provider is attached to.
The metadata maintained includes the replica ID, tick count (representing progression in time), conflict log, tombstone log, and the set of the changes the data store has seen (knowledge).
A replica ID and tick count pair makes up a version and encodes the state of the data store until that time.
During a synchronization session, the destination provider sends the knowledge set of the store.
ADO.NET Datasets are synchronized between the source and the destination, which are then persisted to a database server.
The Sync Services for ADO.NET provider is intended for use in offline applications, where data from the central database is cached locally.
The application works against the cached data, and the changes are uploaded in a batch.
The Sync Services for File Systems provider also provides a preview mode which enumerates the actions that will be taken for a sync operation, without actually performing the operations, with a view to letting the users review the changes that will be made.
The provider can also be used to extract items from a FeedSync feed and merge the changes back to the data store.
Sync Services for FeedSync uses another provider to connect to the data store.
Similarly, the FeedSync consumer service helps a synchronization application take an input RSS or Atom XML stream, extract items from it, and then use a synchronization provider to apply only the appropriate changes to a replica.