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


Пространство имен Microsoft.Synchronization.MetadataStorage

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

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

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

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

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

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

Инкапсуляция метаданных для реплик

Класс ReplicaMetadata инкапсулирует все метаданные для конкретной реплики. Доступ к метаданным реплики производится через элементы GetKnowledge и ReplicaId.

  • Некоторые методы этого класса реализуют методы службы синхронизации, например метод ReplicaMetadata..::..GetChangeBatch способен выполнять большую часть работы метода GetChangeBatch класса KnowledgeSyncProvider.

  • Метод GetLocalVersions может быть вызван из метода ProcessChangeBatch службы синхронизации KnowledgeSyncProvider для поиска локальных версий элементов пакета изменений, которые необходимы стороне, применяющей изменения.

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

Инкапсуляция метаданных для элементов

Поиск метаданных элементов в хранилище метаданных производится методами объекта ReplicaMetadata по идентификаторам элементов или индексируемым полям, например, через метод FindItemMetadataById или FindItemMetadataByIndexedFields. Класс ItemMetadata инкапсулирует все метаданные для конкретного элемента. Он содержит стандартные метаданные синхронизации — ChangeVersion, CreationVersion, GlobalId и IsDeleted. Кроме того, этот класс содержит несколько методов, которые могут применяться для осуществления доступа к любым пользовательским полям, которые были определены при инициализации метаданных реплики.

Классы

  Класс Описание
Открытый класс ChangeUnitMetadata Представляет метаданные, связанные с базовой единицей, содержащейся в элементе в области синхронизации.
Открытый класс DeleteDetector При реализации в производном классе DeleteDetector определяет, какие из элементов были удалены из реплики. Эти элементы должны быть помечены как удаленные в хранилище метаданных.
Открытый класс ExplicitTransactionRequiredException Это исключение генерируется при вызове метода, требующего запуска явной транзакции в хранилище метаданных.
Открытый класс FieldSchema Содержит сведения о схеме, определяющие пользовательское поле элемента в хранилище метаданных.
Открытый класс IndexSchema Одностолбцовый или многостолбцовый индекс, который можно использовать для более эффективного поиска элементов в хранилище метаданных.
Открытый класс ItemMetadata При переопределении представляет метаданные, связанные с элементом в области синхронизации.
Открытый класс ItemMetadataNotFoundException Это исключение генерируется, когда элемент с заданным идентификатором или значением пользовательского поля не был найден в хранилище метаданных.
Открытый класс KeyUniquenessException Исключение, выдаваемое при попытке сохранения элемента, имеющего недопустимый или повторяющийся идентификатор.
Открытый класс MetadataFieldNotFoundException Исключение, выдаваемое в том случае, если именованное настраиваемое поле не существует.
Открытый класс MetadataStorageEngineException Исключение, которое возникает, если при операции подсистемы хранилища метаданных возникает ошибка.
Открытый класс MetadataStore При переопределении представляет хранилище метаданных и предоставляет методы для получения объекта метаданных реплики. Этот объект метаданных реплики используется для доступа к метаданным конкретной реплики. Этот абстрактный базовый класс наследуют все хранилища метаданных, использующие API-интерфейс службы хранилища метаданных.
Открытый класс MetadataStoreException Базовый класс для всех исключений хранилищ метаданных.
Открытый класс MetadataStoreInvalidOperationException Исключение, которое возникает, если вызов метода недопустим при текущем состоянии объекта.
Открытый класс MetadataStoreProviderVersionMismatchException Исключение, которое возникает, если указанная при вызове метода DeserializeReplicaMetadata ожидаемая версия совместимости поставщика не соответствует версии поставщика, сохраненной в сериализованных метаданных.
Открытый класс MultipleReplicasInStoreException Исключение, вызываемое в том случае, если при вызове метода GetSingleReplicaMetadata хранилище метаданных содержит метаданные для более чем одной реплики.
Открытый класс ReplicaMetadata При переопределении в производном классе этот метод предоставляет доступ к метаданным реплики и элемента в хранилище метаданных. Кроме того, класс ReplicaMetadata обеспечивает функции для обнаружения удалений и помощники для реализации методов службы синхронизации.
Открытый класс ReplicaMetadataAlreadyExistsException Исключение, выдаваемое при попытке создания новых метаданных реплики в хранилище метаданных в том случае, если метаданные для данной реплики уже существуют в хранилище метаданных.
Открытый класс ReplicaMetadataInUseException Исключение, выдаваемое при попытке создания более чем одного активного экземпляра ReplicaMetadata для определенного идентификатора реплики.
Открытый класс ReplicaMetadataNotFoundException Исключение, выдаваемое в том случае, если в хранилище метаданных не существует метаданных реплики для указанного идентификатора реплики.
Открытый класс SqlMetadataStore Представляет хранилище метаданных, реализованное с помощью упрощенной базы данных.
Открытый класс SqlSyncFieldValue Представляет значение пользовательского поля элемента.
Открытый класс SqlSyncMetadataStoreSerializer Сериализует и десериализует метаданные для реплики между каноническим форматом файла метаданных и форматом хранения службы хранилища метаданных, зависящей от версии формата метаданных.
Открытый класс SyncFieldValue При переопределении в производном классе представляет значение пользовательского поля элемента.
Открытый класс SyncMetadataStoreSerializer При переопределении в производном классе выполняет сериализацию и десериализацию метаданных для реплики.
Открытый класс UpgradeStartEventArgs Предоставляет данные для события MetadataStoreUpgradeStart.
Открытый класс VersionNotSupportedException Исключение, которое выдается при попытке получения метаданных реплики из хранилища метаданных в том случае, если версия метаданных не поддерживается реализацией хранилища метаданных.

Интерфейсы

  Интерфейс Описание
Открытый интерфейс IProviderUpgradeCallback При реализации в производном классе представляет методы, которые Sync Framework может вызвать для уведомления поставщика о событиях, происходящих во время обновления хранилища метаданных вследствие изменения версии поставщика.

Делегаты

  Делегат Описание
Открытый делегат ReplicaMetadata. . :: . .ItemFilterCallback Представляет метод, который определит, следует ли включать изменение элемента в пакет изменений.