Sync Framework 支持在数据库之间进行同步。它提供了一个直观且灵活的 API,使您可以生成面向脱机和协作方案的应用程序。通过该 API,您可以根据应用程序的体系结构和要求,使用所提供的所有或部分组件。Sync Framework 支持客户端-服务器、客户端到客户端和混合拓扑。在客户端-服务器拓扑中,所有客户端都与某一中央服务器同步。在客户端到客户端拓扑中,每个客户端都可以与其他客户端同步,而变更不必通过中央服务器来传递。混合拓扑由客户端到客户端拓扑和客户端-服务器拓扑组合而成。
Sync Framework 与其他技术的对比
Microsoft 为执行同步的应用程序提供了多种技术。 就对等同步而言,可对比的最重要的技术是对等事务复制。这种技术用于同步两个或更多 SQL Server Enterprise 数据库。 尽管比较这两种技术很有用,但应注意对等事务复制专用于提供可伸缩性和高可用性的服务器到服务器的同步,而 Sync Framework 专用于支持协作应用程序的客户端到服务器的同步以及客户端到客户端的同步。
下表可帮助您决定哪一种技术最适合您要构建的应用程序。
主要功能 | 对等事务复制 | Sync Framework |
---|---|---|
使用服务进行同步 | 否 | 是 |
与其他类型的数据存储区同步1 | 否 | 是 |
增量变更跟踪2 | 是 | 是 |
冲突检测和解决3 | 是 | 是 |
自动初始化架构和数据 | 是 | 否 |
支持大型数据集 | 是 | 是 |
自动传播架构变更 | 是 | 否 |
1数据库可以与 Sync Framework 支持的其他数据源(例如,Web 服务、文件系统或自定义数据存储区)交换信息。
2Sync Framework 使用净变更跟踪,在其中同步行的最新版本。在对等事务复制中,对每一对等方按顺序应用对一行所做的所有变更。
3 复制内置冲突解决功能;因此,Sync Framework 为构建冲突解决方案提供了一个框架。
Sync Framework 提供了类似于脱机数据集这样的编程模型的灵活性,并且具有更加丰富的同步功能集(与复制中提供的功能集类似)。复制适合数据库管理员使用,旨在同步 SQL Server 数据库。复制提供许多重要功能,并可通过向导、存储过程及其自身的 API 进行配置。Sync Framework 则面向开发人员,支持与其他类型的数据存储区进行同步以及跨服务(如 Windows Communication Foundation,WCF)进行的同步。
对于某些应用程序,很容易做出使用某种技术的决定:如果必须使用多个单独的组件以通过不同传输或服务进行同步,或者对数据源而不是数据库进行同步,则应使用 Sync Framework。如果您是一名数据库管理员,您正准备设计一个具有可伸缩性和高可用性的系统,或者希望在不进行过多编程的情况下配置同步,则复制可能是更好的选择。最后,您必须仔细考虑应用程序的要求,并确定 Sync Framework API 是否是适用的技术。如果您想做的不仅仅是将架构及其数据从一个数据库复制到另一个数据库,建议您使用 Sync Framework。
同步方案
对组织来说,能够支持移动和远程工作人员正在变得越来越重要。组织机构应确保这些工作人员能够像在办公室时一样访问到相同的信息,这一点非常重要。在大多数情况下,这些用户将使用便携式计算机、办公台式机、smartphone 或 PDA。通过这些设备,用户有时候可以使用 VPN 连接或可直接连接到公司网络的其他方法访问其数据。对于大多数远程用户来说,这种解决方案由于在下列方面存在严重缺陷而无法获得满意的效果:
-
网络要求
若要使用户能够访问信息,远程设备在访问数据时必须能够不间断地连接到公司网络。对于某些工作人员(如在家办公的人员),这可能并不是什么问题。但对于其他用户(如经常出差的销售人员),就可能会比较困难。例如,如果某一销售人员正在拜访客户,并且由于没有网络连接而无法访问库存数据,该销售人员将无法有效地完成工作。
-
数据访问速度
在典型的客户端-服务器公司环境中,用户拥有可快速访问信息的高速网络。但是,远程工作人员常常通过不太可靠的慢速网络进行连接。在使用典型的解决方案时,每次当用户需要一份数据时,都必须进行下载,因为无法将数据长久地保存到设备上。例如,销售人员每次打开应用程序时,都必须下载其产品列表,而使用信息填充应用程序所需的时间可能非常长,这让用户非常苦恼。
-
单个故障点
使用这种解决方案时,用户常常依赖于单个服务器数据库。如果数据库由于计划的服务器停机或意外的服务器故障而无法使用,所有远程工作人员与其数据的连接将会中断。
-
服务器可伸缩性
随着远程工作人员的数量不断增加,公司服务器的性能将会受到影响,并且可能需要添加更多的硬件。
偶尔连接的应用程序
前一部分介绍的解决方案的一种替代方案是实现偶尔连接的应用程序。偶尔连接的应用程序仍使得远程工作人员能够访问数据,但其所需的信息在本地存储。偶尔连接的应用程序通常使用数据同步来填充本地数据库。
数据同步包括以下功能:定期获取存储在一个数据库(如客户端数据库)中的信息并与其他数据库(如服务器数据库)同步变更。基于同步的解决方案的优点在于:用户不再必须使用不间断的网络连接来访问信息。由于将数据存储在本地,用户可以随时访问数据,同时还减轻了中心数据库的处理负载。此外,由于网络速度不再是限制因素,用户现在能够以本地计算机的速度来访问数据。
客户端到客户端同步可避免发生单点故障,因为它使同步不依赖于所有变更均需通过服务器。这种将大量应用程序处理推向每个客户端的功能还有助于解决服务器可伸缩性问题。
Sync Framework 使用"同步提供程序"与同步的每个数据库进行通信。Sync Framework 数据库提供程序(与 ADO.NET 数据提供程序类似)保护其他 Sync Framework 组件不受各数据库的特定实现方式的影响。Sync Framework 包括五个数据库提供程序,这些提供程序支持两种方案:脱机和协作方案。下图显示一个脱机方案:在客户端-服务器拓扑中,多个客户端连接到一个中央服务器,以便在连接可用时同步数据。

这种偶尔连接的应用程序的一个常见扩展是支持协作应用方案的能力。在这些应用方案中,两个数据库可以通过对等方式进行同步,而无需通过中央集线器。下图显示一个混合拓扑,其中,一个中央服务器与多个客户端同步,并且这些客户端能够彼此同步。此类拓扑可以支持允许用户共享项目备注的应用程序。项目团队成员常常要求他们可处理的数据的本地副本。当他们进行变更时,他们可以与服务器同步以上载变更,或与其他团队成员同步以交换变更。

数据库同步提供程序
下面是 Sync Framework 包括的三个主要数据库同步提供程序:
-
SqlSyncProvider - 用于同步 SQL Server 数据库
-
SqlCeSyncProvider - 用于同步 SQL Server Compact 数据库
-
DbSyncProvider - 通常用于同步非 SQL Server 数据库
这些提供程序具有以下特征:
-
适合于客户端-服务器拓扑、对等拓扑和混合拓扑。
-
可以用于更灵活的方式。例如,您可以同步 DbSyncProvider 的两个实例,或者同步SqlSyncProvider 的一个实例和SqlCeSyncProvider 的一个实例,等等。
-
使用 Sync Framework 元数据并且可与其他 Sync Framework 提供程序一起参与拓扑。
还包括两个仅支持脱机方案的附加数据库同步提供程序。这两个提供程序已被上述既支持脱机方案又支持协作方案的提供程序所取代。在本文档中包括这些提供程序是作为对使用它们的现有应用程序的参考。若要开发新应用程序,请使用上述提供程序。
仅供脱机使用的提供程序是:
-
DbServerSyncProvider
-
SqlCeClientSyncProvider
这些提供程序具有以下特征:
-
适合于客户端-服务器拓扑。
-
总是成对使用。例如,您不能通过使用 ServerSyncProvider 的两个实例同步两个服务器数据库(改为使用SqlSyncProvider 或DbSyncProvider)。
-
可能没有协作提供程序复杂,但无法与其他 Sync Framework 提供程序一起参与拓扑。