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

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

API-интерфейс службы хранилища метаданных

API-интерфейс службы хранилища метаданных состоит из следующих элементов:

Структура CUSTOM_FIELD_DEFINITION

Интерфейс IItemMetadata2

Структура CUSTOM_FIELDS_INDEX

Интерфейс IItemMetadataEnumerator

Перечисление METASTORE_ISOLATIONLEVEL

Интерфейс IMetadataStoreUpgradeCallback

Перечисление SYNC_METADATA_FIELD_TYPE

Интерфейс IProviderMetadataUpgradeCallback

Коды ошибок хранилища метаданных

Интерфейс IReplicaMetadata

Интерфейс IChangeBatchCallback

Интерфейс IReplicaMetadata2

Интерфейс IChangeUnitMetadata

Интерфейс ISqlSyncMetadataStore

Интерфейс IChangeUnitMetadataEnumerator

Интерфейс ISyncMetadataStore

Интерфейс IFieldValue

Интерфейс ISyncMetadataStore2

Интерфейс IItemMetadata

Интерфейс ISyncMetadataStoreSerializer

Использование службы хранилища метаданных

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

Инициализация метаданных

Главным интерфейсом для всех хранилищ метаданных является 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

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

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