Microsoft Sync Framework基础篇 2:Microsoft Sync Framework架构与运行时

Microsoft Sync Framework架构与运行时

本篇会先为大家介绍同步的各种参与方,参与方的类型决定了我们是否能够存储元数据,以及是否能够直接启动同步过程。然后会和大家详细讨论Microsoft Sync Framework的核心组件和系统架构,以让大家对Sync Framework有一个全局性的认识和了解。

 

Sync Framework参与方(Participants)

在讨论Sync Framework核心组件之前,我们需要首先了解Sync Framework 支持的不同类型的同步参加方。参与方是提供程序及其关联副本的组合,代表了同步的一端。要同步的副本(即信息仓库)可以是取自 Web 服务、笔记本电脑、乃至 U 盘中的任何对象。

Microsoft Sync Framework 支持三种类型的参与方:完整、部分和简单。参与方的类型由其存储和处理同步元数据的能力决定。至少,我们可以假定如有请求,副本具备通过程序返回信息的能力。最后需要确定的是副本是否能够:

  1. 在现有设备上或当前数据存储中存储和操作信息,并
  2. 允许应用程序(我们称之为同步提供程序)直接在设备上执行

区分参与方的类型对于同步生态系统来说十分重要,因为它使我们了解到该参与方是否能够存储提供程序所需的状态信息,以及我们是否能够直接在设备上运行提供程序。最终,参与方模型将成为通用模型。因此,可以将完整参与方配置为部分或简单参与方。

完整参与方

完整参与方是指允许开发人员直接在设备上创建应用程序和新数据存储的设备。笔记本电脑和智能电话就属于完整参与方,因为可以直接从此类设备执行新的应用程序,并且如有必要,您还可以创建新的数据存储以保存信息。

部分参与方

部分参与方是指能够在设备上存储数据的设备。但无法直接从这些设备上启动可执行程序。部分参与方的重要特性在于它能够存储同步所需的元数据,并因此得以与任何完整参与方进行同步。部分参与方的一个例子是 U 盘。这些设备类似于硬盘,能够创建、更新或删除信息。但通常它们不提供使应用程序能够直接在设备上运行的接口。

简单参与方

简单参与方是指仅具备当接到请求时提供信息这一种能力的设备。此类设备不能存储或操作新数据,而且不支持创建新的应用程序。简单参与方依靠完整参与方存储其元数据(因此只能与特定的完整参与方进行同步)。

由外部组织(如 Amazon 或 EBay)提供的 RSS 源和 Web 服务都属于简单参与方。这些组织可能会赋予您执行 Web 服务并取回结果的能力,但不会赋予您在其 Web 服务器上创建您自己的数据存储或执行您自己应用程序的能力。

组合同步参与方

Microsoft Sync Framework 的最终目标是,无论数据源采用哪种参与类型,都允许对它们进行集成。因此,简单和部分参与方可以与完整参与方同步信息。但至少需要一个能够存储信息和启动同步过程的完整参与方。

 

Sync Framework核心组件

Sync Framework 包括一个运行时、用于特定数据存储区的一组“同步提供程序(synchronization providers)”以及用于编写提供程序的一个 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 中。它们可用于在以下类型的方案中同步数据库:
    • 协作方案。例如,在一个允许用户共享项目备注的应用程序中,项目团队成员通常需要一份可以处理的数据的本地副本。当他们进行变更时,可以与其他团队成员同步以交换变更,还可以与中央服务器同步变更。
    • 脱机方案。例如,一个销售人员需要在客户的办公室访问产品数据,还必须能上载订单。该销售人员可以在每天早上与中央服务器同步以确保具有最新的产品和价格信息,然后在晚上执行同步以上载当天的订单。
  • 文件同步提供程序(在以前的版本中称为 Sync Services for File Systems)。此提供程序包含在 FileSyncProvider21.dll 和 Microsoft.Synchronization.Files.dll 中。它可用于同步 NTFS、FAT 或 SMB 文件系统中的文件和文件夹。要同步的目录可为本地或远程目录,且不必同属一个文件系统。应用程序可以使用静态筛选器通过显式列出文件或使用通配符(如 *.txt)来排除或包括这些文件;或者应用程序可以设置筛选器来排除整个子文件夹。应用程序还可以注册以接收文件同步进度的通知。
  • Web Feed同步组件(在以前的版本中称为 Sync Services for FeedSync)。这些组件包含在 FeedSync21.dll 和 Microsoft.Synchronization.dll 中。可以通过两种方式使用这些组件:
    • Web Feed同步提供程序服务可用于编写将 FeedSync XML 文件表示为其副本的提供程序。
    • Web Feed生成方和使用方组件可用于将其他类型的副本(如文件系统)的数据与 RSS 或 Atom Feeds同步。
  • 自定义提供程序。这些组件包含在 Synchronization21.dll 和 Microsoft.Synchronization.dll 以及 SimpleProviders21.dll 和 Microsoft.Synchronization.SimpleProviders.dll 中。它们可用于为任何类型的数据存储区创建同步提供程序。例如,如果应用程序包括用于客户联系人跟踪的自定义存储系统,您可以使用简单提供程序或完全自定义提供程序将该数据集成到您的应用程序。
  • 元数据存储服务。此组件包含在 MetaStore21.dll 和Microsoft.Synchronization.MetadataStorage.dll 中。自定义提供程序可以使用该服务作为存储和处理同步元数据的一种便捷方式,特别对于无法存储元数据的副本很适用。元数据存储服务使用占用较小内存和磁盘空间的可靠轻型数据库,可以随提供程序重新分发。该 API 将元数据存储区与用于访问元数据存储区的接口和方法明确区分开,这样既可实现备用存储区,且对提供程序稍作变更即可使用备用存储区。
  • 核心 API 和运行时。这些组件包含在 Synchronization21.dll 和 Microsoft.Synchronization.dll 中。核心API和运行时由除脱机数据库提供程序之外的其他组件使用。

 

Sync Framework系统架构

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

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

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

  • 由开发人员编写的元素。
    • 应用程序根据应用程序的要求调用同步方法、响应事件和处理其他任务。
    • 数据存储区可以是文件系统、关系数据库、平面文件联系人存储区或需要同步的任何其他数据存储区。
    • 数据传输协议确定两个提供程序之间传输数据变更的方式。
  • 由 Sync Framework 提供的元素。
    • 根据使用的是本机代码还是托管代码,应用程序与同步会话或同步控制器通信,后者与每个同步提供程序通信。
    • 同步运行时驱动同步过程并将状态、冲突和错误信息告知客户端应用程序。
  • 由开发人员编写或由 Sync Framework 提供的元素,取决于具体实现方案。
    • 提供程序对于正在同步的数据类型而言是特定的。在某些情况下,应用程序需要必须由开发人员编写的自定义提供程序。Sync Framework 提供了很多简化这一过程的 API,还提供了一些组件帮助完成同步最困难的部分(如冲突检测)。
    • 元数据存储区包含元数据,Sync Framework 使用这些元数据确定每个提供程序应选择哪些变更并将它们应用到所服务的数据存储区。存储和使用元数据的方式取决于所使用的提供程序。例如,用于数据库的提供程序一般将元数据存储在数据存储区所在数据库的跟踪表中。对于自定义提供程序,您可以创建元数据存储区或使用随 Sync Framework 提供的服务。

在了解了Sync Framework的核心组件和系统架构之后,我会在下一篇中详细的讨论Sync Framework的另一个关键特征:Sync Metadata,即同步元数据。

posted @ 2012-03-08 09:59  Life a Poem  阅读(3399)  评论(1编辑  收藏  举报