概述和方案

Sync Framework 支持在数据库之间进行同步。它提供了一个直观且灵活的 API,使您可以生成面向脱机和协作方案的应用程序。通过该 API,您可以根据应用程序的体系结构和要求,使用所提供的所有或部分组件。Sync Framework 支持客户端-服务器、客户端到客户端和混合拓扑。在客户端-服务器拓扑中,所有客户端都与某一中央服务器同步。在客户端到客户端拓扑中,每个客户端都可以与其他客户端同步,而变更不必通过中央服务器来传递。混合拓扑由客户端到客户端拓扑和客户端-服务器拓扑组合而成。

同步方案

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

  • 网络要求

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

  • 数据访问速度

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

  • 单个故障点

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

  • 服务器可伸缩性

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

偶尔连接的应用程序

前一部分介绍的解决方案的一种替代方案是实现偶尔连接的应用程序。偶尔连接的应用程序仍使得远程工作人员能够访问数据,但其所需的信息在本地存储。偶尔连接的应用程序通常使用数据同步来填充本地数据库。

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

客户端到客户端同步可避免发生单点故障,因为它使同步不依赖于所有变更均需通过服务器。这种将大量应用程序处理推向每个客户端的功能还有助于解决服务器可伸缩性问题。

Sync Framework 使用“同步提供程序”**与同步的每个数据库进行通信。Sync Framework 数据库提供程序(与 ADO.NET 数据提供程序类似)保护其他 Sync Framework 组件不受各数据库的特定实现方式的影响。Sync Framework 包括五个数据库提供程序,这些提供程序支持两种方案:脱机和协作方案。下图显示一个脱机方案:在客户端-服务器拓扑中,多个客户端连接到一个中央服务器,以便在连接可用时同步数据。

Sync Services 脱机方案

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

Sync Services 协作方案

Sync Framework 包括的五个数据库同步提供程序可划分为以下两类:

  • DbServerSyncProviderSqlCeClientSyncProvider 支持脱机方案。这些提供程序具有以下特征:

    • 适合于客户端-服务器拓扑。

    • 总是成对使用。例如,您不能通过使用 ServerSyncProvider 的两个实例同步两个服务器数据库(改为使用 SqlSyncProviderDbSyncProvider)。

    • 可能没有协作提供程序复杂,但无法与其他 Sync Framework 提供程序一起参与拓扑。

    有关脱机同步的更多信息,请参见脱机方案

  • SqlSyncProviderSqlCeSyncProviderDbSyncProvider 支持协作方案。分别使用 SqlSyncProviderSqlCeSyncProvider 来同步 SQL Server 和 SQL Server Compact 数据库。DbSyncProvider 通常用于同步非 SQL Server 数据库。这些提供程序具有以下特征:

    • 适合于对等和混合拓扑。如果要求更先进的功能,例如复杂批处理,则可以用于客户端-服务器拓扑。

    • 可以用于更灵活的方式。例如,您可以同步 DbSyncProvider 的两个实例,或者同步 SqlSyncProvider 的一个实例和 SqlCeSyncProvider 的一个实例,等等。

    • 使用 Sync Framework 元数据并且可与其他 Sync Framework 提供程序一起参与拓扑。

    有关数据协作的更多信息,请参见协作方案

请参阅

概念

同步数据库