用于协作同步的体系结构和类
在脱机和协作方案中,Sync Framework 可用于双层体系结构和 N 层体系结构中。在这两个体系结构中,活动将在“同步会话”**期间发生:“同步控制器”**将与两个“同步提供程序”**通信,以便检索变更和将变更应用于各数据库。这两个提供程序将“同步适配器”**用于每个表以及该表所需的特定 SQL 命令某些提供程序会公开适配器以便您可以自定义这些命令。其他提供程序会自动生成适配器,以便降低与同步特定存储区相关联的复杂度。
下图显示一个双层体系结构:某一同步会话的所有组件都驻留在本地计算机上,并且没有从本地计算机到远程计算机上的数据库的直接连接。在同步会话过程中,本地计算机是发起同步的计算机。如果要从多台计算机发起同步,每台计算机必须包含图中显示的所有组件。这些图后面的内容详细介绍了这些组件。
下图显示一个 N 层体系结构:需要附加的组件,包括远程计算机上的组件;并且与远程数据库的连接现在由本地计算机上的代理和远程计算机上的服务处理。该代理和服务必须由应用程序开发人员实现。提供了示例以便降低与此任务相关联的复杂度。对于双层体系结构而言,如果要从多台计算机发起同步,每台计算机必须包含所有组件。
数据库
数据库可以是任何版本的 SQL Server 2005 SP2 或更高版本(包括 SQL Server Compact 3.5 SP1 或更高版本,32 位或 64 位版本),或者提供了 ADO.NET 提供程序的其他数据库。Sync Framework 自动为 SQL Server 和 SQL Server Compact 数据库配置变更跟踪和元数据存储。有关更多信息,请参见如何配置和执行协作同步 (SQL Server)。对于非 SQL Server 数据库,您必须设置数据库。有关更多信息,请参见如何为协作同步设置服务器数据库(非 SQL Server)。
SyncOrchestrator
同步控制器通过以下方式驱动同步过程:
基于变更的 Direction 属性,确定应用变更所应遵循的顺序和方向。
调用远程同步提供程序以检索和应用远程数据库中的变更。
调用本地同步提供程序以检索和应用本地数据库中的变更。
此外,同步控制器还维护同步会话的会话级别信息,并向启动同步的应用程序提供成功消息、错误和统计信息。有关更多信息,请参见 SyncOrchestrator。
SyncProvider(SqlSyncProvider、SqlCeSyncProvider 和 DbSyncProvider)
同步提供程序与每个数据库通信并将同步控制器与数据库的特定实现隔离开来。对于每个 SQL Server Compact 数据库,使用 SqlCeSyncProvider;对于 SQL Server 的其他版本,使用 SqlSyncProvider。对于其他数据库,使用 DbSyncProvider。所有三个提供程序都继承自 RelationalSyncProvider。同步提供程序的主要活动如下所示:
检索自上次同步会话以来在数据库中发生的变更。
将增量变更应用于数据库。
检测发生冲突的变更。
备注
如果您在通过使用 SqlCeSyncProvider 的两个实例来同步两个 SQL Server Compact 数据库,则必须使用 N 层体系结构。双层体系结构不支持该方案。
SyncAdapter(DbSyncAdapter 和 SqlCeSyncAdapter)
同步适配器模仿 ADO.NET 中的数据适配器,并为进行同步的每个表定义同步适配器。同步适配器为同步提供程序提供与数据库交互所需的特定 SQL 命令。
对于 SqlSyncProvider 和 SqlCeSyncProvider 使用的同步适配器,Sync Framework 自动生成命令(SqlCeSyncAdapter 专用于降低与此存储区进行同步的复杂度)。对于 DbSyncAdapter,您创建适配器并指定命令,例如 InsertCommand,此命令可从其他服务器或客户端数据库向服务器数据库应用插入。由于同步适配器使用 ADO.NET DbCommand 对象,因此可以使用 ADO.NET 支持的任意命令结构。这包括 SQL、存储过程、针对单个表的视图、函数等。这些命令只需要定义了要传输和应用的结构和数据的单个结果。有关更多信息,请参见 DbSyncAdapter。有关命令的更多信息,请参见如何配置和执行协作同步(非 SQL Server)中的“同步适配器”。
API 中的其他类
本主题中的图展示了 API 中主要的类。但是,还有许多类没有在图中展示出来。若要获取有关所有可用类的信息,请参见 Microsoft.Synchronization、Microsoft.Synchronization.Data、Microsoft.Synchronization.Data.SqlServer 和 Microsoft.Synchronization.Data.SqlServerCe。以下部分介绍了您应该熟悉的其他重要的类。
DbSyncScope
同步作用域是必须作为一个单元同步的对象的逻辑分组。在数据库同步的情况下,作用域通常是一组表;并且可以对表进行筛选。表可以包括在一个或多个作用域中。有关更多信息,请参见如何为协作同步设置服务器数据库(非 SQL Server)中的“定义要同步的作用域”。
数据库设置对象
对于 SQL Server 和 SQL Server Compact 数据库,Sync Framework 提供一组类,用于描述作用域以及在每个作用域中包括的表。在描述了表和作用域后,您使用 Sync Framework 对象将设置脚本应用于各节点。这些脚本创建变更跟踪和变更应用基础结构,该基础结构由元数据表、触发器和存储过程构成。下表列出了用于设置数据库和提供程序的类。有关更多信息,请参见如何配置和执行协作同步 (SQL Server)。
SQL Server | SQL Server Compact | 说明 |
---|---|---|
DbSyncScopeDescription |
表示同步作用域,同步作用域是作为一个单元同步的表(可筛选)的逻辑分组。 |
|
表示针对 DbSyncScopeDescription 对象表示的特定作用域的 SQL Server 或 SQL Server Compact 数据库的设置。 |
||
表示针对特定作用域的 SqlSyncProvider 或 SqlCeSyncProvider 使用的配置信息。 |
||
DbSyncTableDescription |
表示在同步作用域中包括的表的架构。 |
|
DbSyncColumnDescription |
表示属于在同步作用域中包括的表的列的架构。 |
|
表示涉及同步的 SQL Server 或 SQL Server Compact 数据库的作用域和表信息。 |
||
SqlSyncTableProvisioning |
表示针对 DbSyncTableDescription 对象表示的 SQL Server 或 SQL Server Compact 数据库的设置。 |
|
SqlSyncProviderAdapterConfiguration |
表示 SQL Server 或 SQL Server Compact 数据库中表的同步适配器配置信息。 |
SyncOperationStatistics
会话统计信息是同步控制器为每个同步会话提供的一组统计信息。统计信息包括与同步时间、所处理的变更数量以及所发生的任何冲突或异常有关的信息。有关更多信息,请参见 SyncOperationStatistics。
DbSyncSession
DbSyncSession 对象提供对同步会话变量的访问。会话变量是一些为开发人员提供的变量,用作在使用 DbSyncProvider 和 DbSyncAdapter 的服务器上执行的选择、插入、更新和删除命令的参数。有关更多信息,请参见如何使用协作同步的会话变量。
Sync Framework DLL
Sync Framework 数据库同步类包含在以下 DLL 中:
Microsoft.Synchronization.dll,它包括 SyncOrchestrator。
Microsoft.Synchronization.SqlServer.dll,它包括 SqlSyncProvider。
Microsoft.Synchronization.SqlServerCe.dll,它包括 SqlCeSyncProvider。
Microsoft.Synchronization.Data.dll,它包括 RelationalSyncProvider、DbSyncProvider 和 DbSyncAdapter。
这些 DLL 依赖于 .NET Framework 2.0 或更高版本中的 System.dll 和 System.Data.dll。