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
在上一篇 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
相关文章推荐
- Microsoft Sync Framework 系列(八):微软同步框架中的自定义数据同步基础
- Microsoft Sync Framework 系列(一):微软同步框架概述
- 微软同步框架-Microsoft Sync Framework 系列
- Microsoft Sync Framework 系列(七):微软同步框架中的参与者(participants)
- Microsoft Sync Framework 系列(二):微软同步框架下载、文档、示例
- Microsoft Sync Framework 系列(四):微软同步框架中的基本概念
- Microsoft Sync Framework 系列(五):微软同步框架中的元数据(Metadata)
- Microsoft Sync Framework 系列(六):微软同步框架中的知识(Knowledge)
- Microsoft Sync Framework 系列(三):微软同步框架出现背景及要解决的问题
- 认识一下,同步技术框架 Microsoft Sync Framework
- Microsoft .NET Framework 2.0 Application Development Foundation 翻译系列2(第一章:框架基本原理)
- Microsoft Sync Framework 学习实例1--文件同步
- 数据同步框架MS Sync Framework [术语、例子、参考资料、Tips]
- Microsoft Sync Framework下的快速开发同步程序
- \t\t[O/RM]EDM 微软 实体 模型 框架 Microsoft Entity Framework
- Microsoft Sync Framework下的快速开发同步程序
- Microsoft Sync Framework同步数据库 4:如何为数据库同步筛选数据
- 大家对微软推出的Microsoft Sync Framework和google推出的 google gears 有什么看法,有谁用过?
- Microsoft Sync Framework同步数据库 3:针对同步进行设置
- 数据同步框架MS Sync Framework - IDE快速开发支持Local Database Cache