您的位置:首页 > 其它

Microsoft Sync Framework 系列(九):微软同步框架中的提供者(Provider)

2008-05-27 09:14 495 查看
同步提供者(synchronization provider)是 Microsoft Sync Framework 一个软件组件(software component),它连接了 MSF runtime 和要同步的信息存储(Sync Providers, which provide the link between the MSF runtime and the information stores being synchronized)。

在上一篇 Microsoft Sync Framework 系列(八):微软同步框架中的自定义数据同步基础 中我们说过,session 会连接两个 provider:source provider 和 destination provider 。
一些基本概念:

replica (复本)

在 Microsoft Sync Framework 中 replica 用来确保在 provider 枚举更改之前所有本地的更改都反映到了它的 knowledge 中。
change set (更改集)

源一组更改,包含的信息:global IDs,versions,knowledge(source replica 的),tombstones(墓碑)。
obsolete change (作废更改)

本地的更改已经包含在 destination knowledge 中,也就是说 destination 中该数据也更改,不能被应用到 destination 。(An obsolete change is a change that is already contained in the destination replica's knowledge and that should not be applied to the destination replica. )
Provider 的 Enumerating Changes 功能
两个复本(replica)之间的更改枚举

destination provider 向 source provider 请求更改的过程如下:

destination replica 确保那些与 source 同步相关的本地更改都已经反映在了它的 knowledge 中。

destination provider 发送这些 knowledge,source provider 接受。

source provider 枚举本地的更改和删除并一条一条的与 destination replica's knowledge 比较,如果 source 本地的更改没有包含在 destination replica's knowledge 中 source provider 就将该更改加入 change set。

source provider 将 change set 返回给 destination provider。
处理 Obsolete Changes
当 change set 构建时,obsolete changes 被自动排除在外。provider 可以通过 MSF 提供的 API 执行自己的逻辑来验证添加到 change set 中的更改是否已经作废(obsolete)。

例如,provider 可以调用 knowledge 的 contains API 判断 change 的 global ID 和 version 是否包含在 destination replica's knowledge 中,如果没有,provider 将更改添加到 change batch。
处理冲突(Handling Conflicts )

destination provider 负责检查和处理冲突。
Concurrency Conflicts(并发冲突)

在同步之前,source 和 destination 对同一 item 进行了 update-delete(一方更新,另一方删除) 或者 update-update(两边都进行了更新)。

在 MSF 中当 destination replica 某个更改的 version 没有包含在(not contained in) source replica's knowledge 中时就认为发生了 Concurrency Conflicts 。

注意,这里的包含(Contains)是 knowledge API 里的一个操作,不是简单的包括。例如对于同一 Item, source 中的 A6 包含 destination 中的 A5。
Constraint Conflicts(约束冲突)

违反约束或者规则而被认为的冲突,Constraint Conflicts 的检测要根据具体的数据存储而定。
destination provider 负责在冲突处理完成后将更改应用到 destination replica ,同时负责维护 knowledge (将 made-with knowledge 更新到 learned knowledge)。
MSF 对具有层次结构的同步没有提供内建支持,需要 provider 自己处理。
MSF 对更改子集(change unit 或 subitem change)提供了良好的支持。合理的使用 change unit 可以有效提升同步效率,并且可以使我们细粒度的跟踪更改,减少冲突影响。

本系列最后一篇空话,下一步会介绍 synchronization services for ado.net 。

参考:
Synchronization Providers

FLYabroad 标签: 微软同步框架, MSF, SyncFramework
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐