Microsoft Sync Framework(MSF)为我们提供了进行同步应用开发的基础框架和 API这些 API 即有基于托管代码的也有基于非托管代码的也就是说我们既可以开发基于NET平台使用托管 API 的同步应用也可以开发基于WIN平台非托管 API 的同步应用
MSF 只是一个框架一个软件的半成品它可以提供一些同步应用的通用基础功能但是它没有办法知道我们要同步那里的数据是单向双向还是多向沖突如何解决等问题也没有办法了解我们业务系统的逻辑所以我们的任务是使用 MSF 提供的基础来开发自定义的同步系统来满足我们自身系统同步的需要
使用 MSF 同步数据存储(replica)需要三个基本组件synchronization session(同步会话在本系列中简称 session)和两个 synchronization provider(同步提供者在本系列中简称 provider)
同步时应用程序创建 session 并且传入相应的 source provider 和 destination provider 来初始化同步同步过程中 session 使用 source provider 来获取 source replica 的变化并将变化通过 destination provider 应用到 destination replica 创建自定义的同步 provider 是使用 MSF 的核心
provider 的职责
管理 replica 的 metadata 和 knowledge同时还有每一个要被同步的 item 的 metadata
传输实际的 item 数据从自己的 data store 中传出或者将其他 data store 的数据传入
使用 Sync Framework 中的 API 来 enumerate change (作为 source)或者 detect conflictsapply changes (作为 destination)
provider 是 MSF 框架的核心主要的功能是管理元数据Sync Framework 提供托管和非托管的 API 来帮助我们开发 Provider这个以后实例中会讲到
同步算法
单向同步(oneway synchronaztion)
session 取得 destination replica 的 knowledge 并发送给 source provider
source provider 利用 destination 的 knowledge 找出需要发送到 destination 的更改
source provider 将刚刚枚举出的更改传递给 session
session 利用 destination provider 来检测沖突并将源发送过来的变化(change)应用到 destination replica
两个 replica 之间的双向同步(Twoway synchronization)可以通过两次单向同步完成
与一个计算机连接的 N 个 replicas 之间的多路同步(Nway synchronization)执行过程
所有 replica 通过 oneway synchronization 方式将自身数据同步到中心复本(central replica)
所有沖突在中心复本(central replica)上处理
所有 replica 通过 oneway synchronization 方式从中心复本(central replica)同步到本地
就像上两篇文章所讲provider 要想枚举更改或者检测沖突必须要管理元数据provider 可以自己来进行管理但更好的办法是通过专门的 Metadata Management 组件后面我们会降到