Компоненты по службе хранилища метаданных Sync Framework
Служба хранилища метаданных обеспечивает поддержку для хранения и обработки метаданных синхронизации.
API-интерфейс службы хранилища метаданных
API-интерфейс службы хранилища метаданных состоит из следующих элементов:
Использование службы хранилища метаданных
Служба хранилища метаданных является набором интерфейсов, позволяющих разработчикам служб хранения реализовывать пользовательские наборы классов для хранения метаданных в хранилищах данных любого типа. Служба хранилища метаданных также предоставляет реализацию интерфейса, который использует упрощенную базу данных для хранения метаданных синхронизации в едином файле базы данных в файловой системе.
Инициализация метаданных
Главным интерфейсом для всех хранилищ метаданных является ISyncMetadataStore. Он содержит методы для инициализации и получения метаданных реплики из хранилища метаданных, а также для начала и завершения транзакций в базе данных. Интерфейсы, производные от этого интерфейса (например, ISqlSyncMetadataStore), могут предоставлять методы для создания и открытия хранилищ метаданных.
Метод ISyncMetadataStore::InitializeReplicaMetadata инициализирует метаданные реплики в хранилище метаданных. Параметр CUSTOM_FIELD_DEFINITION этого метода позволяет создать набор пользовательских полей. Эти поля могут применяться для хранения в хранилище метаданных дополнительных метаданных элементов. Параметр CUSTOM_FIELDS_INDEX позволяет определять наборы полей в качестве индексов. Эти индексы могут быть использованы для эффективного поиска элементов в хранилище метаданных.
Инкапсуляция метаданных для реплик
Интерфейс IReplicaMetadata инкапсулирует все метаданные для конкретной реплики. Доступ к метаданным реплики производится с помощью таких методов, как IReplicaMetadata::GetKnowledge и IReplicaMetadata::GetReplicaId.
Несколько методов этого интерфейса помогают реализовать методы службы синхронизации, включая следующие.
IReplicaMetadata::GetChangeBatch. Этот метод способен выполнять большую часть функций метода IKnowledgeSyncProvider::GetChangeBatch.
IReplicaMetadata::GetItemBatchVersions. Этот метод может быть вызван из метода IKnowledgeSyncProvider::ProcessChangeBatch для поиска локальных версий элементов пакета изменений. Локальные версии необходимы объекту применения изменений.
Кроме того, интерфейс IReplicaMetadata содержит службу обнаружения удалений. Методы вроде IReplicaMetadata::GetUnreportedItems дают поставщику возможность выяснить, какие элементы были удалены из хранилища элементов и должны быть помечены как удаленные в хранилище метаданных.
Инкапсуляция метаданных для элементов
Методы интерфейса IReplicaMetadata могут использоваться для поиска метаданных элемента в хранилище метаданных по идентификатору элемента или индексируемым полям. Например, это методы IReplicaMetadata::FindItemMetadataByGlobalId и IReplicaMetadata::FindItemMetadataByIndexedFields. Класс Интерфейс IItemMetadata инкапсулирует все метаданные для конкретного элемента. Доступ к этим метаданным производится с помощью таких методов, как IItemMetadata::GetChangeVersion, IItemMetadata::GetCreationVersion, IItemMetadata::GetGlobalId и IItemMetadata::GetIsDeleted. Кроме того, этот класс содержит несколько методов, которые могут применяться для осуществления доступа к любым пользовательским полям, которые были определены при инициализации метаданных реплики.
Коды ошибок
Служба хранилища метаданных сообщает о проблемах при помощи набора пользовательских ошибок. Дополнительные сведения см. в разделе Коды ошибок хранилища метаданных.
См. также
Справочник
Microsoft.Synchronization.MetadataStorage