同步提供程序
在 Microsoft Sync Framework 中,同步提供程序是允许副本与其他副本同步数据的软件组件。通过使用同步会话,同步应用程序将目标提供程序与源提供程序连接,以将源副本上发生变更的项同步到目标副本。在文件系统中管理文件夹的提供程序就是一个简单的同步提供程序。此提供程序可以与管理文件夹的另一个提供程序连接,以将其文件夹中的文件与其他提供程序的文件夹中的文件同步。
在同步期间,目标提供程序提供自己的当前知识,从源接收变更列表,检测该列表与自己的项之间是否有冲突并将变更应用到自己的数据存储。源提供程序使用目标副本的当前知识确定源副本中的哪些变更还不为目标副本所知,并将变更列表发送到目标提供程序。Sync Framework 提供代表这些提供程序处理此类任务的组件。
实现同步提供程序
可以使用托管代码或非托管代码实现同步提供程序。
安全性注意 |
---|
Sync Framework 将同步提供程序视为受信任的代码。因此,调用同步提供程序的应用程序必须通过具有该提供程序的显式知识或通过使用某种其他机制(如数字签名)以确定该提供程序是受信任的。 |
使用托管代码实现同步提供程序
开发提供程序的主要任务是实现 KnowledgeSyncProvider 抽象类(该类继承自 SyncProvider 抽象类)以及 IChangeDataRetriever 和 INotifyingChangeApplierTarget 接口。
在开始同步前,提供程序必须首先通过使用同步应用程序所需的任何机制,使 SyncProvider 实现可用于该应用程序。
在典型同步期间,Sync Framework 执行以下基本调用:
对于这两个提供程序调用 BeginSession。这将通知提供程序它正在联接一个同步会话。
对于目标提供程序调用 GetSyncBatchParameters。目标提供程序返回自己的知识和请求的批大小。
在源提供程序上调用 GetChangeBatch 并传递目标提供程序的知识。源提供程序使用目标提供程序的知识检测变更并返回这些变更。有关更多信息,请参见枚举变更。
在目标提供程序上调用 ProcessChangeBatch 并传递源提供程序的变更列表。目标提供程序使用 Sync Framework 变更应用方组件检测冲突并应用变更。有关更多信息,请参见处理冲突和应用变更。
为批中的每个变更在源提供程序上调用 LoadChangeData。源提供程序将一个接口返回给自己的数据传输机制。
为批中的每个变更在目标提供程序上调用 SaveItemChange。目标提供程序使用源提供程序的传输机制传输与该变更关联的数据。
在目标提供程序上调用 StoreKnowledgeForScope。目标提供程序将传递来的知识作为当前知识保存。
对于这两个提供程序调用 EndSession。这将通知提供程序它正在离开它先前已联接的同步会话。
使用非托管代码实现同步提供程序
开发提供程序的主要任务是实现 IKnowledgeSyncProvider、ISyncProvider、ISynchronousDataRetriever 和 ISynchronousNotifyingChangeApplierTarget 接口。还存在其中某些接口的异步版本,请参见 IAsynchronousDataRetriever 接口 和 IAsynchronousNotifyingChangeApplierTarget 接口。
在开始同步前,提供程序必须首先通过使用同步应用程序所需的任何机制,使 ISyncProvider 实现可用于该应用程序。
在典型同步期间,Sync Framework 执行以下基本调用:
对于这两个提供程序调用 BeginSession。这将通知提供程序它正在联接一个同步会话。
对于目标提供程序调用 GetSyncBatchParameters。目标提供程序返回自己的知识和请求的批大小。
在源提供程序上调用 GetChangeBatch 并传递目标提供程序的知识。源提供程序使用目标提供程序的知识检测变更并返回这些变更。有关更多信息,请参见枚举变更。
在目标提供程序上调用 ProcessChangeBatch 并传递源提供程序的变更列表。目标提供程序使用 Sync Framework 变更应用方组件检测冲突并应用变更。有关更多信息,请参见处理冲突和应用变更。
为批中的每个变更在源提供程序上调用 LoadChangeData。源提供程序将一个接口返回给自己的数据传输机制。
为批中的每个变更在目标提供程序上调用 SaveChange。目标提供程序使用源提供程序的传输机制传输与该变更关联的数据。
在目标提供程序上调用 SaveKnowledge。目标提供程序将传递来的知识作为当前知识保存。
对于这两个提供程序调用 EndSession。这将通知提供程序它正在离开它先前已联接的同步会话。
有关如何创建同步提供程序的更多信息,请参见如何创建非托管同步提供程序。
请参阅
参考
IKnowledgeSyncProvider 接口
ISynchronousDataRetriever 接口
ISyncProvider 接口
ISynchronousNotifyingChangeApplierTarget 接口
KnowledgeSyncProvider
SyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
概念
如何创建非托管同步提供程序
枚举变更
处理冲突
应用变更
同步变更单位
报告同步进度
筛选同步数据
支持并发同步任务
与 FeedSync 馈送进行互操作
恢复过期副本