Microsoft Sync Framework(MSF)中的参与者(participant)就是具体参与同步的实体。MSF中的参与者可以是设备(笔记本电脑,U盘)也可以是运行着sync framework并与其他计算机进行同步的服务(Web服务)。MSF可以在具有各种能力的参与者之间同步数据 。
根据参与者保存和修改数据及执行应用程序的能力,参与者可以划分为不同的参与类型,MSF抽象了4中类型的参与者(participants):
- 完全参与者(Full participant)
- 代理参与者(Proxy participant)
- 部分参与者(partial participant)
- 简单参与者(Simple Participant)
完全参与者(Full Participants)
完全参与者(Full Participants)可以在本地设备上岗宿主运行时和元数据服务,允许开发人员创建应用并在本地存储数据。笔记本电脑和Smartphone手机就可以作为Full Participant,它们可以直接执行应用程序,并可以创建新的数据存储。 完全参与者(Full Participant)可以进行Peer-to-Peer同步。
Full Participant Two Full Participants in Peer-to-Peer Synchronization
代理参与者(Proxy participant)
代理参与者(Proxy participant)作为远程provider的一个代理,把命令请求和元数据通过网络发送到remote provider,远程代理实现同步的运行时和处理逻辑。remote provider 一般部署在远程的服务器上,例如数据库服务器。
Full Participant Synchronizing with a Proxy Participant Central Application Synchronizing Two Proxy Participants
部分参与者(Partial Participants)
部分参与者(Partial Participants)可以存储同步元数据但没有处理元数据的能力,也就是说这些设备没有运行程序的能力。该类参与者包括具有数据存储能力的U盘(USB thumb drives),SD卡,Mobile phones等,它们可以像硬盘一样保存,更新和删除数据。
部分参与者依赖其他的完全参与者来宿主运行时(host the runtime)并且启动同步。Partial Participants 没法进行 Peer-to-Peer(P2P)同步。
完全参与者与部分参与者同步时,Full Participants 负责枚举、过滤 Partial Participants 中的更改并将元数据存储在 Partial Participants 中。
Partial Participants Full Participant Synchronizing with a Partial Participant
简单参与者(Simple Participants)
简单参与者(Simple Participants)不存储元数据,不能宿主运行时(host the runtime),因此可能无法跟踪更改(change tracking)。Simple Participants 完全依赖一个完全参与者(a single full participant)处理所有的同步操作,包括:枚举更改 ,应用更改,存储并维护元数据。
典型的简单参与者有RSS订阅源、ATOM订阅源,只读的Web服务等。它们被一些外部的组织机构创建,例如Amazon或EBay。这些组织机构可以给你能力去执行WEB服务并取得返回结果。但是,他们不会给你创建自己的数据存储的能力,并且也没有给你在他们的Web服务器上创建并执行你自己的应用程序的能力。
Simple Participants Full Participant Using the Metadata Store to Synchronize a Simple Participant
总结:
完全参与者功能全面,除了必备的存储数据(包括元数据)和处理数据(包括元数据)的能力外,还部署有MSF runtime,可以启动同步会话(sync session),通过本地和远程sync provider,跟踪数据更改,检查并处理冲突的能力。
代理参与者作为本地同步提供者和远程同步提供者的代理,在网络上代理请求的转发。
部分参与者可以存储同步数据和元数据,但不能处理这些数据。
简单参与者连元数据都不存储,一切同步都要依靠完全参与者。
因此在一个同步会话过程中,必须要有一个承载了 MSF 运行时的完全参与者。对于P2P同步需要所有的参与者都是完全参与者(Full participant)。