Microsoft Sync Framework

Microsoft Sync Framework 是一个功能完善的同步平台,实现了应用程序、服务和设备的协作和脱机访问。它提供了一些可支持在脱机状态下漫游、共享和获取数据的技术和工具。通过使用 Sync Framework,开发人员可以构建同步生态系统,将任何应用程序与任何网络上使用任何协议的任何存储中的任何数据集成在一起。

Sync Framework 包含以下技术,前三项技术可随 SQL Server 2008 一起安装:

  • Sync Services for ADO.NET,可在脱机和协作方案中使用以同步数据库。

  • Sync Framework 核心组件,可供 Sync Services for ADO.NET 使用以同步数据库,也可以用于为其他类型的数据存储创建同步提供程序。

  • Sync Services for FeedSync,可用于将 RSS 和 Atom 源与本地存储中的数据进行同步。

  • Sync Services for File Systems,可用于同步文件系统中的文件和文件夹。

  • Metadata Storage Service,可用于在 SQL Server Compact 3.5 中存储同步元数据。

本主题的其余部分简要说明了 Sync Services for ADO.NET,并包含与其他 Microsoft 技术的比较。有关 Sync Services for ADO.NET 和 Sync Framework 的完整文档,请访问 Microsoft Sync Framework 开发人员中心

安装 Microsoft Sync Framework 和 Sync Services for ADO.NET

可以使用 SQL Server 2008 安装向导或命令行安装选项来安装 Sync Framework。若要使用该向导安装 Sync Framework,请在**“功能选择”**页上选择 Microsoft Sync Framework。有关如何安装 SQL Server 和相关组件的详细信息,请参阅 SQL Server 安装概述

概述和同步方案

对于组织和机构来说,支持移动和远程工作人员的能力变得越来越重要。组织机构应确保这些工作人员能够像在办公室时一样访问到相同的信息,这一点非常重要。大多数情况下,这些用户配备了便携式计算机、办公室台式机、智能电话或 PDA。通过这些设备,用户可以经常使用 VPN 连接或其他某些可直接连接到公司网络的方法直接访问其数据。对于大多数远程用户来说,这种解决方案由于在下列方面存在严重缺陷而无法获得满意的效果:

  • 网络要求

    若要使用户能够获得信息,远程设备在获取数据时必须能够不间断地连接到公司网络。对于某些工作人员(如在家办公的人员),这可能并不是什么问题。但对于其他人员(如经常出差的销售人员),就可能会比较困难。例如,如果销售人员正在拜访客户,并且由于没有网络连接而无法访问库存数据,销售人员将无法有效地完成工作。

  • 数据访问速度

    在典型的客户端/服务器公司环境中,用户拥有可快速访问信息的高速网络。但是,远程工作人员通常通过不太可靠的慢速有线或无线网络进行连接。在使用典型的解决方案时,每次当用户需要一份数据时,都必须进行下载,因为无法将数据长久地保存到设备上。例如,销售人员每次打开应用程序时,都必须下载其产品列表,而使用信息填充应用程序所需的时间可能非常长,这让用户非常苦恼。

  • 单个故障点

    使用这种解决方案时,所有用户都依赖于单个服务器。如果数据库由于计划的服务器停机或意外的服务器故障而无法使用,所有远程工作人员与其数据的连接将会中断。

  • 服务器可伸缩性

    随着远程工作人员的数量不断增加,公司服务器的性能将会受到影响,并且可能需要添加更多的硬件。

偶尔连接的应用程序

前一部分介绍的解决方案的一种替代方案是实现偶尔连接的应用程序。偶尔连接的应用程序使得远程工作人员能够持续访问数据。在前面的方案中,用户必须直接访问公司数据库才能获取所需信息;而此方案则与之不同,用户所需的信息存储在本地设备上。偶尔连接的应用程序通常使用数据同步来填充本地数据库。

数据同步包括以下功能:定期获取存储在客户端数据库(如 SQL Server Compact 3.5)中的信息以及在客户端数据库和服务器数据库(如 SQL Server)之间同步更改。基于同步的解决方案的优点在于:用户不再必须使用不间断的网络连接来访问信息。由于将数据存储在本地,用户可以随时访问数据,同时还减轻了中心数据库的处理负载。此外,由于网络速度不再是限制因素,用户现在能够以设备的速度来访问数据。

Sync Services for ADO.NET

Sync Services for ADO.NET 支持在数据库之间进行同步。它提供了一个直观且灵活的 API,可用来构建面向脱机和协作应用方案的应用程序。Sync Services for ADO.NET 支持在两个对等方(如 SQL Server 数据库)之间进行同步,或者在 SQL Server Compact 3.5 客户端数据库和 ADO.NET 提供程序支持的任何服务器数据库之间进行同步。该 API 允许使用提供的所有组件或其中的部分组件,具体取决于应用程序的体系结构和要求。

下图展示了偶尔连接应用程序的示例,其中数据(由绿色数据库表示)本地存储在远程工作人员的设备中。第一个示例演示一个独立的数据库系统,它将信息直接存储在用户的设备上。第二个示例演示一个远程办公室,它将信息存储在该远程办公室内的工作组数据库中,以使多个本地工作人员能够访问数据。

Sync Services 脱机方案

这种类型的偶尔连接应用程序的一个常见扩展是支持协作应用方案的能力。在这些应用方案中,两个数据库可以通过对等方式进行同步,而无需通过中央服务器。正如下图所示,远程数据库可以不受限制地与任何其他数据库交换信息。当远程工作人员(如现场财务审计人员)在远程位置以工作组的形式办公时,这种类型的解决方案非常有用。这些工作人员之间经常需要共享信息。但是,由于他们不能连接到中心数据库,因此必须通过某种对等网络共享信息。

Sync Services 协作方案

将 Sync Services for ADO.NET 与 SQL Server 一起使用

Sync Services for ADO.NET 通过以下方式支持数据库:

  • 在脱机应用方案中,客户端数据库必须为 SQL Server Compact 3.5 3.5 或更高版本。服务器可以是 ADO.NET 提供程序支持的任何数据库。

  • 在协作应用方案中,每个对等数据库必须是 SQL Server 2000 Service Pack 4 或更高版本。

SQL Server 是一个企业级数据库,它为需要同步的应用程序奠定了坚实的基础。SQL Server 2008 提供更改跟踪,这是对同步开发人员最有用的功能之一。Sync Services for ADO.NET 提供了用于同步更改的 API,但并不实际跟踪服务器或对等数据库中的更改。((SQL Server Compact 3.5 跟踪客户端数据库中的更改。)您可以创建自定义的更改跟踪系统,但这通常会大大增加复杂性和性能开销。建议您使用 SQL Server 2008 中的更改跟踪功能,因为它易于配置并提供高性能的跟踪操作。有关详细信息,请参阅 跟踪数据更改

Sync Services for ADO.NET 与其他技术的比较

Microsoft 提供了几种专为执行同步的应用程序设计的技术。因此,将 Sync Services for ADO.NET 与脱机和协作应用方案中使用的其他技术进行比较是非常有用的。

脱机同步

最重要的 Microsoft 脱机同步技术如下所示:

  • 远程数据访问 (RDA)。此技术用于将 SQL Server Compact 3.5 数据库与其他版本的 SQL Server 数据库进行同步。有关详细信息,请参阅 SQL Server Compact 3.5 联机丛书。

  • 合并复制。此技术用于同步不同版本的 SQL Server(包括 SQL Server Compact 3.5)。有关详细信息,请参阅合并复制概述选择适当的复制类型

可以使用下表来帮助确定哪种技术适合您要构建的应用程序。

关键功能

RDA

合并复制

Sync Services

使用 N 层或面向服务的体系结构进行同步

支持异类数据库

增量更改跟踪

否1

冲突检测和解决

是2

在客户端上轻松创建数据视图

自动初始化架构和数据

支持大型数据集

具有本地可用的查询处理器

自动传播架构更改

自动对数据进行重新分区

在设备上使用

1 RDA 支持增量上载,但下载始终是用于更新客户端上所有数据的快照。

2 合并复制提供了内置的冲突解决功能;而 Sync Services for ADO.NET 提供了一个用于构建冲突解决架构的框架。

协作同步

就协作同步而言,要比较的最重要的技术是对等事务复制,它用于同步两个或多个 SQL Server Enterprise 数据库。Sync Services for ADO.NET 和事务复制均支持对等同步:事务复制最适于保持高可用性以及将读取活动扩展到多台服务器;而 Sync Services for ADO.NET 最适于用户协同处理相同数据的应用程序。

可以使用下表来帮助确定哪种技术适合要构建的应用程序。有关对等事务复制的详细信息,请参阅对等事务复制

关键功能

对等事务复制

Sync Services

使用 N 层或面向服务的体系结构进行同步

支持异类数据库

增量更改跟踪1

冲突检测和解决 2

自动初始化架构和数据

支持大型数据集

具有本地可用的查询处理器

自动传播架构更改

在设备上使用

此版本不支持

与 SQL Server Compact 3.5 一起使用

此版本不支持

1Sync Services for ADO.NET 使用净更改跟踪,它对行的最后一个版本进行同步。使用对等事务复制时,将按顺序应用在每个对等方中对行所做的所有更改。

2 复制提供了内置的冲突解决功能;而 Sync Services for ADO.NET 提供了一个用于构建冲突解决架构的框架。

确定要使用的技术

Sync Services for ADO.NET 提供了灵活的编程模型(如脱机数据集)和更丰富的同步功能集(如复制中的功能)。Sync Services for ADO.NET 功能优于 RDA。复制适合数据库管理员,主要用于同步 SQL Server 数据库。复制通过向导、存储过程及其自己的 API 为重要功能提供配置数据。Sync Services for ADO.NET 适合开发人员,它支持异类数据库并且可通过服务(如 Windows Communication Foundation (WCF))进行同步。如果应用程序需要与非 SQL Server 数据库进行同步,或者应用程序必须使用单独组件以支持通过不同的传输或服务进行同步,请使用 Sync Services for ADO.NET。

对于某些应用程序,很容易确定要使用的技术:如果必须同步 SQL Server 数据库以外的数据源,则应该使用 Sync Services for ADO.NET。如果您是要配置同步的数据库管理员,并且不希望进行大量的编程工作,则复制可能是更好的选择。最后,您必须仔细考虑应用程序要求,并确定 Sync Services for ADO.NET API 是否是要使用的合适技术。如果所需的并不仅仅是在数据库之间复制架构及其数据,建议您使用 Sync Services for ADO.NET。