实现同步应用程序

同步应用程序是一个软件组件,它创建同步会话,将会话与两个同步提供程序相连,使用该会话来启动同步,并在同步期间承载 Sync Framework。还可以注册同步提供程序来处理 Sync Framework 报告回来的事件。

备注

Sync Framework 不涉及应用程序如何获取提供程序并将它们实例化,也不涉及应用程序如何确定提供程序正在请求同步以及它要与哪个提供程序同步。

实现同步应用程序

可以使用托管代码或非托管代码实现同步应用程序。

Security note安全性注意

Sync Framework 将同步提供程序视为受信任的代码。因此,调用同步提供程序的应用程序必须通过具有该提供程序的显式知识或通过使用某种其他机制(如数字签名),确定该提供程序是受信任的。

使用托管代码实现同步应用程序

应用程序通过执行以下操作创建和启动一个同步会话:

  1. 创建 SyncOrchestrator 对象。

  2. 设置控制器的 LocalProviderRemoteProvider 属性。

  3. 将控制器的 Direction 属性设置为相应的同步方向。在 Upload 方向中,LocalProvider 对象是源而 RemoteProvider 对象是目标。在 Download 方向中,LocalProvider 对象是目标而 RemoteProvider 对象是源。请注意,使用 DownloadAndUploadUploadAndDownload 可以执行双向同步。

  4. 调用控制器的 Synchronize 方法。这将代表处理所有其他同步任务的应用程序创建一个会话。如果该应用程序要取消同步,它可以调用 Cancel 方法。

使用非托管代码实现同步应用程序

应用程序通过执行以下操作创建和启动一个同步会话对象:

  1. 创建 IApplicationSyncServices 对象。通过调用 CoCreateInstance 并为其传递 CLSID_SyncServices(对于 CLSID)和 IID_IApplicationSyncServices(对于 IID)完成创建。

  2. 创建 ISyncSession 对象。通过调用 IApplicationSyncServices::CreateSyncSession 方法完成创建。将两个提供程序传递给此方法:将其中一个指定为源提供程序,另一个指定为目标提供程序。

  3. 调用 ISyncSession::Start 方法。然后,Sync Framework 处理所有其他同步任务。如果该应用程序要取消同步,可以调用 ISyncSession::Cancel 方法。

  4. 完成同步后,可以通过创建另一个会话对象,将原来的源提供程序和目标提供程序对调并为新会话对象调用 ISyncSession::Start,来实现双向同步。

有关如何创建同步应用程序的更多信息,请参见如何创建非托管同步应用程序

同步事件

可以注册应用程序以通知它有关在同步期间发生的各种事件。处理事件的两个主要原因是跟踪进度和实现自定义冲突处理。

托管代码 实现事件处理程序方法并将它们注册到 SyncOrchestrator 对象或 SyncCallbacks 对象。

非托管代码 使用 ISyncSession::RegisterCallback 方法注册实现 ISyncCallback 接口的对象。

有关更多信息,请参见响应同步事件

请参阅

参考

IApplicationSyncServices 接口
ISyncSession 接口
ISyncCallback 接口
SyncOrchestrator
SyncCallbacks

概念

Microsoft Sync Framework
自定义提供程序的基础知识
响应同步事件