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


Взаимодействие с поставщиком

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

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

  • Поставщик источника для фильтрации изменений во время перечисления изменений.

  • Поставщик назначения для получения версий назначения элементов для модуля применения изменений.

  • Поставщик или приложение для очистки элементов, отмеченных как удаленные в хранилище метаданных.

  • Поставщик назначения для восстановления устаревшей реплики назначения.

Перечисление изменений

Объект метаданных реплики содержит метод, который перечисляет изменения, если поставщик действует как поставщик источника. В большинстве случаев метод GetChangeBatch поставщика может быть реализован путем передачи его параметров непосредственно в реализацию объекта метаданных реплики.

Управляемый код Чтобы перечислить изменения, которые были внесены в реплику источника, вызовите метод GetChangeBatch объекта ReplicaMetadata.

Неуправляемый код Чтобы перечислить изменения, которые были внесены в реплику источника, вызовите метод IReplicaMetadata::GetChangeBatch.

Фильтрация изменений

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

Управляемый код Чтобы выполнить фильтрацию изменений, которые включены в пакет изменений, реализуйте делегат ItemFilterCallback и передайте его в GetFilteredChangeBatch.

Неуправляемый код Чтобы выполнить фильтрацию изменений, которые включены в пакет изменений, реализуйте IChangeBatchCallback и передайте его в IReplicaMetadata::GetFilteredChangeBatch.

Получение версий назначения

Объект метаданных реплики предоставляет метод, позволяющий поставщику назначения реализовать его метод ProcessChangeBatch путем получения от поставщика источника версий в реплике назначения для элементов, содержащихся в пакете изменений. Этот пакет версий назначения затем может быть передан в модуль применения изменений.

Управляемый код Чтобы получить пакет изменений, который содержит версии, применимые к реплике назначения, вызовите метод GetLocalVersions объекта ReplicaMetadata.

Неуправляемый код Чтобы получить пакет изменений, который содержит версии, применимые к реплике назначения, вызовите метод IReplicaMetadata::GetItemBatchVersions.

Очистка удаленных элементов

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

Восстановление устаревшей реплики

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

Управляемый код При вызове метода GetFullEnumerationChangeBatch поставщика источника поставщик источника может вызвать метод GetFullEnumerationChangeBatch объекта ReplicaMetadata. При вызове метода ProcessFullEnumerationChangeBatch поставщика назначения этот поставщик назначения может получить пакет изменений, содержащий версии, которые относятся к реплике назначения, путем вызова метода GetFullEnumerationLocalVersions объекта ReplicaMetadata.

Неуправляемый код При вызове метода GetFullEnumerationChangeBatch поставщика источника этот поставщик источника может вызвать метод IReplicaMetadata::GetFullEnumerationChangeBatch. При вызове метода ProcessFullEnumerationChangeBatch поставщика назначения этот поставщик назначения может получить пакет изменений, содержащий версии, применимые к реплике назначения, путем вызова метода IReplicaMetadata::GetFullEnumerationItemBatchVersions.

См. также

Справочник

Интерфейс IReplicaMetadata
Интерфейс IChangeBatchCallback
ReplicaMetadata
ItemFilterCallback

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

Служба хранилища метаданных платформы Sync Framework