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


Требования к метаданным для стандартных поставщиков

Sync Framework требует определенный набор метаданных для каждой реплики и для каждого синхронизируемого элемента.

Необходимые метаданные для каждой реплики

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

Элемент метаданных

Описание

Идентификатор реплики

Уникальный идентификатор реплики в сообществе синхронизации. Хотя идентификатор реплики является гибким идентификатором и может определяться схемой для всего сообщества, рекомендуется 16-разрядный идентификатор GUID. Формат идентификатора реплики, передающегося методу Sync Framework, должен соответствовать формату, определенному поставщиком.

Управляемый код. Формат указывается свойством ReplicaIdFormat класса SyncIdFormatGroup. Идентификатор представлен классом SyncId.

Неуправляемый код. Формат указывается полем replicaId структуры Структура ID_PARAMETERS. Идентификатор представлен структурой SYNC_ID.

Текущий счетчик тактов

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

Управляемый код. Представлен UInt64.

Неуправляемый код. Представлен числом типа ULONGLONG.

Карта ключей реплики

Сопоставление идентификаторов реплики и 4-разрядных ключей. Вследствие регулярного вхождения идентификаторов реплики в метаданные (рекомендуются 16-разрядные идентификаторы GUID), эффективнее представлять эти идентификаторы, используя таблицу их сопоставления с 4-разрядными ключами. После этого можно использовать ключи реплики для ссылок на конкретные реплики.

Управляемый код. Представлен ReplicaKeyMap.

Неуправляемый код. Представлен объектом типа IReplicaKeyMap.

Текущий набор знаний

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

Управляемый код. Представлен SyncKnowledge.

Неуправляемый код. Представлен объектом типа ISyncKnowledge.

Утраченный набор знаний

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

Управляемый код. Представлен ForgottenKnowledge.

Неуправляемый код. Представлен объектом типа IForgottenKnowledge.

Журнал конфликтов

Журнал неразрешенных конфликтов, обнаруженных после перечисления изменений. Для ведения журнала конфликтов реплики необходимы только в тех случаях, когда конфликты сохраняются при выполнении синхронизации. Представление журнала конфликтов определяется репликой, поэтому Sync Framework не обязательно должна получать доступ к этому журналу. Однако при использовании объекта применения изменений можно воспользоваться платформой Sync Framework для ведения журнала конфликтов. Дополнительные сведения см. в разделе Ведение журнала конфликтов и управление конфликтами.

Журнал захоронения

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

Необходимые метаданные для каждого элемента

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

Элемент метаданных

Описание

Глобальный идентификатор

Идентификатор элемента, хранящегося в реплике. Поскольку за создание глобальных идентификаторов отвечает реплика, она может выделить их с целью повысить эффективность перечисления. Например, сообщество синхронизации может определить формат глобального идентификатора как GUID с 8-байтовым префиксом. Затем этот префикс может использоваться для управления порядком сортировки глобальных идентификаторов. Это упрощает поставщику использование диапазонов для перечисления изменений, а поскольку диапазон может содержать большое число элементов, структура знаний становится компактнее, если элементы представлены в виде упорядоченных групп. Дополнительные сведения о форматах глобальных идентификаторов см. в разделе Гибкие идентификаторы.

Управляемый код. Формат указывается свойством ItemIdFormat класса SyncIdFormatGroup. Идентификатор представлен классом SyncId.

Неуправляемый код. Формат указывается полем itemId структуры Структура ID_PARAMETERS. Идентификатор представлен структурой SYNC_ID.

Текущая версия

Последняя обновленная версия элемента. Текущая версия может содержать ключ реплики, в последний раз обновившей этот элемент, и счетчик тактов реплики на момент выполнения изменения.

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

Управляемый код. Представлен SyncVersion.

Неуправляемый код. Представлен SYNC_VERSION.

Версия создания

Версия создания элемента. Версия создания может содержать ключ реплики, создавший этот элемент, и счетчик тактов реплики при его создании.

Управляемый код. Представлен SyncVersion.

Неуправляемый код. Представлен SYNC_VERSION.

Требования к хранилищу

Поскольку реплика определяет формат глобального идентификатора, объем пространства для хранения метаданных может отличаться для разных элементов. Но при использовании рекомендованного формата (идентификатор GUID и 8-разрядный префикс) общий объем хранения составляет 48 байт, как показано в следующей таблице.

Элемент

Байты

Глобальный идентификатор

24 (идентификатор GUID + 8-байтовый префикс)

Текущая версия

12 (4-разрядный ключ реплики + 8-байтовый счетчик тактов)

Версия создания

12 (4-разрядный ключ реплики + 8-байтовый счетчик тактов)

Всего 48 байт

Метаданные конфликтов ограничений

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

Метаданные пользовательских фильтров

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

См. также

Справочник

ReplicaKeyMap

SyncId

SyncGlobalId

SyncIdFormat

SyncIdFormatGroup

SyncVersion

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

Управление метаданными для стандартных поставщиков

Основные сведения о наборе знаний синхронизации

Интерфейс IReplicaKeyMap

Гибкие идентификаторы

Версии синхронизации

Управление отметками полного удаления

Структура SYNC_ID

Структура SYNC_GID

Структура SYNC_VERSION