选择适当的 Sync Framework 组件

本主题介绍用于常见的同步方案的组件,并描述了 Sync Framework 的高级体系结构。

Sync Framework 组件

Sync Framework 包括一个运行时、用于特定数据存储区的一组“同步提供程序”**以及用于编写提供程序的一个 API。提供程序是在数据源和同步系统中的其他组件之间进行通信的软件组件。如果您要同步我们已提供提供程序的数据存储区,强烈建议您使用该提供程序。提供程序具有可扩展性,以便您定制它们来适合您的应用程序。如果您要同步我们未提供提供程序的数据存储区或您需要其他实现,则请使用自定义提供程序。

下图显示了 Sync Framework 中所有组件之间的关系。

Sync Framework 组件

该图中的组件如下所示:

  • 数据库同步提供程序(在以前的版本中称为 Sync Services for ADO.NET)。这些提供程序包含在 Microsoft.Synchronization.dll、Microsoft.Synchronization.Data.dll、Microsoft.Synchronization.Data.Server.dll、Microsoft.Synchronization.Data.SqlServer.dll 和 Microsoft.Synchronization.Data.SqlServerCe.dll 中。它们可用于在以下类型的方案中同步数据库:

    • 协作方案。例如,在一个允许用户共享项目备注的应用程序中,项目团队成员通常需要一份可以处理的数据的本地副本。当他们进行变更时,可以与其他团队成员同步以交换变更,还可以与中央服务器同步变更。

    • 脱机方案。例如,一个销售人员需要在客户的办公室访问产品数据,还必须能上载订单。该销售人员可以在每天早上与中央服务器同步以确保具有最新的产品和价格信息,然后在晚上执行同步以上载当天的订单。

    有关更多信息,请参见同步数据库。脱机提供程序最初是 Synchronization Services for ADO.NET 1.0 的一部分,该服务是在 Sync Framework 1.0 之前发布的。协作提供程序在核心 API 和运行时上面生成,而脱机提供程序不是。脱机提供程序不能参与具有其他类型的 Sync Framework 提供程序的拓扑。

  • 文件同步提供程序(在以前的版本中称为 Sync Services for File Systems)。此提供程序包含在 FileSyncProvider2.dll 和 Microsoft.Synchronization.Files.dll 中。它可用于同步 NTFS、FAT 或 SMB 文件系统中的文件和文件夹。要同步的目录可为本地或远程目录,且不必同属一个文件系统。应用程序可以使用静态筛选器通过显式列出文件或使用通配符(如 *.txt)来排除或包括这些文件;或者应用程序可以设置筛选器来排除整个子文件夹。应用程序还可以注册以接收文件同步进度的通知。有关更多信息,请参见同步文件

  • Web 馈送同步组件(在以前的版本中称为 Sync Services for FeedSync)。这些组件包含在 FeedSync2.dll 和 Microsoft.Synchronization.dll 中。可以通过两种方式使用这些组件:

    • Web 馈送同步提供程序服务可用于编写将 FeedSync XML 文件表示为其副本的提供程序。有关 FeedSync 的更多信息,请参见 FeedSync 网站

    • Web 馈送生成方和使用方组件可用于将其他类型的副本(如文件系统)的数据与 RSS 或 Atom 馈送同步。

    有关更多信息,请参见同步 Web 馈送

  • 自定义提供程序。这些组件包含在 Synchronization2.dll 和 Microsoft.Synchronization.dll 以及 SimpleProviders2.dll 和 Microsoft.Synchronization.SimpleProviders.dll 中。它们可用于为任何类型的数据存储区创建同步提供程序。例如,如果应用程序包括用于客户联系人跟踪的自定义存储系统,您可以使用简单提供程序或完全自定义提供程序将该数据集成到您的应用程序。有关更多信息,请参见使用自定义提供程序来同步数据存储区

  • 元数据存储服务。此组件包含在 MetaStore2.dll 和 Microsoft.Synchronization.MetadataStorage.dll 中。自定义提供程序可以使用该服务作为存储和处理同步元数据的一种便捷方式,特别对于无法存储元数据的副本很适用。元数据存储服务使用占用较小内存和磁盘空间的可靠轻型数据库,可以随提供程序重新分发。该 API 将元数据存储区与用于访问元数据存储区的接口和方法明确区分开,这样既可实现备用存储区,且对提供程序稍作变更即可使用备用存储区。有关更多信息,请参见 Sync Framework Metadata Storage Service

  • 核心 API 和运行时。这些组件包含在 Synchronization2.dll 和 Microsoft.Synchronization.dll 中。核心 API 和运行时由除脱机数据库提供程序之外的其他组件使用。有关这些组件的更多信息,请参见使用自定义提供程序来同步数据存储区

有关安装组件的信息,请参见安装、重新分发和版本兼容性

Sync Framework 提供一整套组件,可以支持各种应用程序的同步。本主题对每个组件做了基本介绍,帮助您确定哪些组件适合于您的应用程序。对于涉及多种类型的数据存储区的应用程序,您下一步是要阅读集成来自不同提供程序的数据

Sync Framework 体系结构

Sync Framework 使用基于提供程序的体系结构。提供程序使其他同步组件不再涉及每个数据存储区的复杂情况和特定实现。这个体系结构配合使用专门的同步元数据,使得 Sync Framework 可以同步编写了提供程序的任何类型的数据存储区。Sync Framework 提供常见数据存储区(如数据库和 NTFS 文件系统)的提供程序,并允许您为其他类型的存储区编写提供程序。提供程序是 Sync Framework 的主要集成点。

下图显示了 Sync Framework 的高级体系结构。同步总是发生在图中所示的两个副本(或“节点”)之间,但是同步社区(或“拓扑”)可以为任何形状,如中心辐射型、对等等。除了一些例外情况外,每对参与者可以根据应用程序的要求在 2 层或 n 层体系结构上同步。每个 Sync Framework 组件的文档提供有关相应体系结构和安全注意事项的详细信息。

Sync Framework 结构概述

图中的元素分为三种类型:

  • 由开发人员编写的元素。

    • 应用程序根据应用程序的要求调用同步方法、响应事件和处理其他任务。

    • 数据存储区可以是文件系统、关系数据库、平面文件联系人存储区或需要同步的任何其他数据存储区。

    • 数据传输协议确定两个提供程序之间传输数据变更的方式。

  • 由 Sync Framework 提供的元素。

    • 根据使用的是本机代码还是托管代码,应用程序相应与同步会话或同步控制器通信,后者然后与每个同步提供程序通信。

    • 同步运行时驱动同步过程并将状态、冲突和错误信息告知客户端应用程序。

  • 由开发人员编写或由 Sync Framework 提供的元素,具体取决于方案。

    • 提供程序对于正在同步的数据类型而言是特定的。在某些情况下,应用程序需要必须由开发人员编写的自定义提供程序。Sync Framework 提供了很多简化这一过程的 API,还提供了一些组件帮助完成同步最困难的部分(如冲突检测)。

    • 元数据存储区包含元数据,Sync Framework 使用这些元数据确定每个提供程序应选择哪些变更并将它们应用到所服务的数据存储区。存储和使用元数据的方式取决于所使用的提供程序。例如,用于数据库的提供程序一般将元数据存储在数据存储区所在数据库的跟踪表中。对于自定义提供程序,您可以创建元数据存储区或使用随 Sync Framework 提供的服务。每个 Sync Framework 组件的文档提供了有关元数据的详细信息。

请参阅

概念

Microsoft Sync Framework
使用 Sync Framework 的好处