Metadata Storage Service 组件
Metadata Storage Service 支持存储和处理同步元数据。
Metadata Storage Service API
Metadata Storage Service API 由下列元素组成:
使用 Metadata Storage Service
Metadata Storage Service 定义为一组接口,存储服务编写器可使用该组接口实现一组自定义类,从而在任何类型的数据存储区中存储元数据。Metadata Storage Service 还提供了一些接口的实现,这些接口使用轻型数据库将同步元数据存储在文件系统中的单个数据库文件中。
初始化元数据
所有元数据存储区的主接口为 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 方法按项 ID 或索引字段(如 IReplicaMetadata::FindItemMetadataByGlobalId 或 IReplicaMetadata::FindItemMetadataByIndexedFields)进行搜索。IItemMetadata 接口 类封装特定项的所有元数据。可以使用 IItemMetadata::GetChangeVersion、IItemMetadata::GetCreationVersion、IItemMetadata::GetGlobalId 和 IItemMetadata::GetIsDeleted 等方法来访问此元数据。此类还包含多个方法,这些方法可用于访问初始化副本元数据时定义的任何自定义字段。
错误代码
Metadata Storage Service 使用一组自定义错误来报告问题。有关详细信息,请参阅 Metadata Storage 错误代码。