Поделиться через


Основные принципы синхронизации данных

Платформа Microsoft Sync Framework синхронизирует хранилища данных, или реплики, используя три основных компонента: сеанс синхронизации и две службы синхронизации. Для синхронизации данных приложение создает сеанс синхронизации и передает ему поставщик источника и поставщик назначения. Сеанс использует поставщик источника, чтобы получить новые изменения, произошедшие в реплике-источнике, а поставщик назначения — чтобы применить эти изменения к реплике-назначению.

Создание поставщика занимает самую значительную часть времени и ресурсов разработчиков. Поставщик хранит метаданные и набор знаний для реплики, а также метаданные для каждого элемента, подлежащего синхронизации. Поставщик также передает фактические данные элемента в хранилище и из хранилища. Поставщик использует компоненты Sync Framework для перечисления изменений, когда поставщик играет роль поставщика источника, и для обнаружения конфликтов и применения изменений, когда поставщик действует в качестве поставщика назначения.

Алгоритм синхронизации

Алгоритм односторонней синхронизации состоит из следующих шагов.

  1. Сеанс получает текущий набор знаний реплики-назначения и отправляет его поставщику источника.

  2. Поставщик источника выполняет перечисление изменений, которые не содержатся в наборе знаний назначения.

  3. Поставщик источника отправляет изменения в сеанс.

  4. Сеанс обнаруживает конфликты и применяет изменения к реплике-назначению, действуя через поставщик назначения.

Двусторонняя синхронизация между двумя репликами выполняется двукратным применением односторонней синхронизации.

Управляемый код. Объект SyncOrchestrator дважды выполняет одностороннюю синхронизацию, когда свойство Direction устанавливается в значение DownloadAndUpload или UploadAndDownload.

Неуправляемый код. Приложение должно создавать объект ISyncSession для односторонней синхронизации в каждом направлении.

Управление метаданными

Каждая реплика должна передавать в сообщество синхронизации набор метаданных, описывающих реплику и ее набор знаний. (Сообществом синхронизации называется набор реплик, которые могут синхронизироваться друг с другом.) Для каждой реплики необходимы следующие метаданные: идентификатор реплики, текущий счетчик тактов, карта ключей реплики, текущий набор знаний, утраченный набор знаний, журнал конфликтов и журнал отметок полного удаления. Реплика также должна хранить метаданные для каждого элемента, подлежащего синхронизации. Для каждого элемента необходимы следующие метаданные: глобальный идентификатор, текущая версия и версия создания. Обычно служба синхронизации управляет метаданными, необходимыми для синхронизации. Однако в зависимости от реализации реплики может оказаться более эффективным выполнять часть задач по управлению метаданными в отдельном компоненте, например в службе, которая очищает отметки полного удаления по расписанию, а не во время синхронизации.

Дополнительные сведения о метаданных см. в разделе Требования к метаданным.

Службы синхронизации

Служба управляет метаданными для реплики и работает с платформой Sync Framework, чтобы перечислять изменения и выявлять конфликты. Служба также работает с хранилищем элементов реплики, отправляя данные элементов, когда служба выступает в качестве поставщика источника, и применяя изменения, когда служба выполняет роль поставщика назначения.

Управляемый код. Служба реализует абстрактные методы и свойства из классов KnowledgeSyncProvider, IChangeDataRetriever и INotifyingChangeApplierTarget.

Неуправляемый код. Служба реализует интерфейсы IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever и ISynchronousNotifyingChangeApplierTarget (или их асинхронные версии для асинхронных служб).

Дополнительные сведения о службах синхронизации, а также о реализации и использовании этих интерфейсов см. в разделе Службы синхронизации.

Приложения синхронизации

Приложение — это компонент, который создает объект сеанса синхронизации, соединяет его с поставщиками и размещает среду синхронизации.

Реализация приложения синхронизации в управляемом коде

Чтобы начать синхронизацию, создайте объект SyncOrchestrator. Затем задайте в свойствах LocalProvider и RemoteProvider интерфейсы SyncProvider двух поставщиков, которые необходимо синхронизировать. Приложение получает или создает интерфейсы поставщиков, используя любой доступный метод. После создания объекта SyncOrchestrator вызовите метод Synchronize, чтобы запустить синхронизацию. В этот момент платформа Sync Framework выполняет все необходимые обращения к двум поставщикам для проведения синхронизации.

Объекты SyncOrchestrator и KnowledgeSyncProvider вызывают события во время синхронизации. Чтобы получить событие, реализуйте метод обработчика событий и зарегистрируйте его для данного события.

Реализация приложения синхронизации в неуправляемом коде

Чтобы начать синхронизацию, создайте объект ISyncSession, передав значения CLSID_SyncServices и IID_IApplicationSyncServices функции CoCreateInstance, а затем вызовите метод IApplicationSyncServices::CreateSyncSession для возвращенного объекта IApplicationSyncServices.

Для метода CreateSyncSession необходимы интерфейсы ISyncProvider двух поставщиков, которые необходимо синхронизировать. Приложение получает или создает интерфейсы поставщиков, используя любой доступный метод. После создания объекта ISyncSession вызовите метод ISyncSession::Start, чтобы запустить синхронизацию. В этот момент платформа Sync Framework выполняет все необходимые обращения к двум поставщикам для проведения синхронизации.

Объект ISyncSession вызывает события в ходе синхронизации. Чтобы получать события, реализуйте интерфейс ISyncCallback и зарегистрируйте его с помощью метода ISyncSession::RegisterCallback.

См. также

Справочник

Интерфейс ISyncSession
Интерфейс ISyncProvider
Интерфейс IKnowledgeSyncProvider
Интерфейс ISynchronousDataRetriever
Интерфейс ISynchronousNotifyingChangeApplierTarget
Интерфейс IApplicationSyncServices
Интерфейс IProviderSyncServices
Интерфейс ISyncCallback
SyncOrchestrator
KnowledgeSyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
SyncCallbacks

Основные понятия

Требования к метаданным
Службы синхронизации
Приложения синхронизации

Другие ресурсы

Платформа Microsoft Sync Framework