Реализация стандартного пользовательского поставщика

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

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

Реализация службы синхронизации

Службу синхронизации можно реализовать с помощью управляемого кода или неуправляемого кода.

Security noteБезопасность Примечание.

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

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

Главной задачей в ходе разработки службы является реализация абстрактного класса KnowledgeSyncProvider (который наследует абстрактный класс SyncProvider), а также интерфейсов IChangeDataRetriever и INotifyingChangeApplierTarget.

Перед началом синхронизации служба должна сделать свою реализацию SyncProvider доступной для приложения синхронизации, используя любой механизм, необходимый приложению.

В ходе типичной синхронизации платформа Sync Framework выполняет следующие основные вызовы.

  • Вызывается метод BeginSession в обоих поставщиках. В результате поставщик уведомляется о присоединении к сеансу синхронизации.

  • Вызывается метод GetSyncBatchParameters в поставщике назначения. Поставщик назначения возвращает свой набор знаний и запрашиваемый размер пакета.

  • Вызывается метод GetChangeBatch в поставщике источника; метод передает набор знаний поставщика назначения. Поставщик источника с помощью набора знаний поставщика назначения определяет изменения и возвращает пакет изменений. Дополнительные сведения см. в разделе Перечисление изменений.

  • Вызывается метод ProcessChangeBatch в поставщике назначения; метод передает список изменений от поставщика источника. Поставщик назначения использует компонент платформы Sync Framework для внесения изменений, чтобы выявить конфликты и применить изменения. Дополнительные сведения см. в разделах Обработка конфликтов и Применение изменений.

  • Для каждого изменения в пакете вызывается метод LoadChangeData в поставщике источника. Поставщик источника возвращает интерфейс для механизма передачи данных.

  • Для каждого изменения в пакете вызывается метод SaveItemChange в поставщике назначения. Поставщик назначения использует механизм передачи, полученный от источника, для передачи данных, связанных с изменением.

  • Вызывается метод StoreKnowledgeForScope в поставщике назначения. Поставщик назначения сохраняет переданный набор знаний в качестве текущего набора знаний.

  • Вызывается метод EndSession в обоих поставщиках. Уведомляет поставщика о выходе из сеанса синхронизации, к которому он присоединился ранее.

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

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

Главной задачей при разработке поставщика является реализация интерфейсов IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetriever и ISynchronousNotifyingChangeApplierTarget. Для некоторых из этих интерфейсов также существуют асинхронные версии. См. разделы Интерфейс IAsynchronousDataRetriever и Интерфейс IAsynchronousNotifyingChangeApplierTarget.

Перед началом синхронизации служба должна сделать свою реализацию ISyncProvider доступной для приложения синхронизации, используя любой механизм, необходимый приложению.

В ходе типичной синхронизации платформа Sync Framework выполняет следующие основные вызовы.

  • Вызывается метод BeginSession в обоих поставщиках. В результате поставщик уведомляется о присоединении к сеансу синхронизации.

  • Вызывается метод GetSyncBatchParameters в поставщике назначения. Поставщик назначения возвращает свой набор знаний и запрашиваемый размер пакета.

  • Вызывается метод GetChangeBatch в поставщике источника и передает набор знаний поставщика назначения. Поставщик источника с помощью набора знаний поставщика назначения определяет изменения и возвращает пакет изменений. Дополнительные сведения см. в разделе Перечисление изменений.

  • Вызывается метод ProcessChangeBatch в поставщике назначения и передает список изменений от поставщика источника. Поставщик назначения использует компонент платформы Sync Framework для внесения изменений, чтобы выявить конфликты и применить изменения. Дополнительные сведения см. в разделах Обработка конфликтов и Применение изменений.

  • Для каждого изменения в пакете вызывается метод LoadChangeData в поставщике источника. Поставщик источника возвращает интерфейс для механизма передачи данных.

  • Для каждого изменения в пакете вызывается метод SaveChange в поставщике назначения. Поставщик назначения использует механизм передачи, полученный от источника, для передачи данных, связанных с изменением.

  • Вызывается метод SaveKnowledge в поставщике назначения. Поставщик назначения сохраняет переданный набор знаний в качестве текущего набора знаний.

  • Вызывается метод EndSession в обоих поставщиках. Уведомляет поставщика о выходе из сеанса синхронизации, к которому он присоединился ранее.

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

См. также

Справочник

Интерфейс IKnowledgeSyncProvider
Интерфейс ISynchronousDataRetriever
Интерфейс ISyncProvider
Интерфейс ISynchronousNotifyingChangeApplierTarget
KnowledgeSyncProvider
SyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget

Основные положения

Платформа Microsoft Sync Framework
Как создать неуправляемую службу синхронизации
Перечисление изменений
Обработка конфликтов
Применение изменений
Синхронизация базовых единиц
Отчет о ходе синхронизации
Фильтрация данных синхронизации
Поддержка параллельных задач синхронизации
Рекомендации по разработке стандартного пользовательского поставщика
Взаимодействие с каналами FeedSync
Восстановление устаревшей реплики