微软发布了最新的Sync Framework 2.0 CTP2
等待了近一年的时间,新版的Sync Framework终于发布了。这次发布的新版本是,Sync Framework 2.0 CTP2 。
与Sync Framework 1.0相比,2.0 在原有功能的基础上,扩展了现有功能,而且增加了一些新的特性。主要改进,体现在过滤(Filter)技术和同步冲突的检测与处理(Conflict Handling)。同时,Sync Framework 2.0 对代码撰写方法进行了改进,即:使用少量代码,即可实现上一版本中的复杂功能,从而降低了开发人员的工作量。最后,还增加了一些新的Provider用于支持新的数据源(Data Source)。
与1.0相比,Sync Framework 2.0 CTP2 做了如下改进:
- 增加了新的功能及特性,使其能够支持新的应用场景(相见下面的功能介绍)
- 改建代码撰写方法,减少开发人员的代码代码量。即:使用少量代码,即可实现上一版本中的复杂功能。
- 增加了新的Provider用于支持新的数据源(Data Source)
同时,增加了如下新的特性:
- 新增的以SQL CE 和SQL 为基础的Provider - SqlCeSyncProvider 和SqlSyncProvider, 并且新增的Provider均支持P2P同步模式。
- 新增的Management API,用于自动提供生产SQL语句,实现与SQL Server的同步。
- 使用新增的API,可以备份和恢复一个同步数据库,且不会损失同步元数据(Metadata)
- 支持0代码量情况下,实现同步的批次处理(这是一个很酷很强大的功能 :) )
- 从一个现存的客户端,使用Snapshot模式,即可初始化出一个新的SQL CE客户端
- 支持共享SQL Server的服务器同步范围
- 改进SQL CE的性能
Sync Framework 2.0 CTP2 功能详解如下:
- 新的数据库provider (SqlSyncProvider and SqlCeSyncProvider)
新的数据库Provider,让SQL Server、SQL Server Express 以及 SQL Server Compact具备了 hub-and-spoke 和 peer-to-peer 两种同步模式。
所谓的hub-and-spoke并不是一个新的概念,早在Sync Services for ado.net V1版本中的 Server-Client 同步模式,即为:hub-and-spoke。具体来讲,hub-and-spoke 是指:中心向四周辐射的同步模式,进一步说,是以一个服务端为中心,同时向多个客户端辐射进行并实现同步。
peer-to-peer(P2P同步) 与其不同,抛弃了客户端、服务端的概念- 即:任何一个数据库端点,都可以作为服务器、或客户使用,大大提高了同步灵活性。peer-to-peer支持任意两个数据库直接实现同步。
在实际应用中,任意一种同步模式下,Sync Framework 2.0 内置的Provider能够自动生成全部的同步命令,您可以不用撰写任何同步查询语句。与V1相比,这个改进带来不小的便利。
新的Providers能够支持以下特性:
- 更为灵活的初始化选项
- 支持基于指定数据大小的批次同步(Batching),而不像过去那样,仅能指定行数进行批次同步
- 维护任务支持:比如MetaData的清除和 服务器端数据库的恢复等
- 改进后的冲突处理机制
Sync Framework 2.0 增加了一些新特性,可以帮助我们更容易的处理各种冲突(Conlfict),新特性如下:
- 约束冲突处理(Constraint conflict handling):Sync Framework 2.0 能够支持约束冲突的处理,无论约束冲突发生在Iteam或Change Units中。
处理的流程为:目标Provider(Destination Provider)能够识别并报告一个约束冲突给sync Framework,并且自动调用Sync Framework中的相关组件解决相应冲突,最终,目标Provider决定使用何种方案解决冲突。
- 冲突日志列表:Sync Framework 2.0 定义了一组接口用于冲突日志处理,并且提供了相应组件 - 帮助管理日志列表中的冲突。
同时,Sync Framework还提供了一个内存中实现(In-Memory)的冲突日志接口,用于那些不包含冲突日志列表的Replica。
无论如何,将冲突保存成日志列表是非常实用的,使用日志,我们可以从同步Session中区分出不同的冲突,并能够单独对其进行处理。比如说:用户可以预览冲突,分析并做出最终决定:如何正确的处理、解决冲突。
- 最后更新为准的冲突解决方案(Last-writer-wins conflict resolution):实际应用中,应用程序在处理并发的冲突时,通常会以最后的更新为准(Last Wins)。新版的Sync Framework 可以让您的应用程序具备这种能力,无论冲突发生在源Replica或是目标Replica,Sync Framework能够比较两者的更改时间,并以最后发生变化的时间为准,完成冲突的处理。
- 改进的 Simple Provider 冲突处理:Simple Provider 包含了一组新的冲突处理接口,使用他们处理并发和约束冲突时,可以指定相应的解决方案予以处理,比以往要简单得多。
- Provider之间的数据转换
在绝大多数场景中,Provider所同步的- 均为相同的数据格式(比如说两个数据库Provider同步中的销售数据),但在实际应用中,不同类型的Provider进行同步,所要求的数据格式是不同的。
为了解决这种情况,Sync Framework 2.0 新提供了一组接口 - 可以将一种数据格式,转换为另一个接口所要求的格式(Data Format),从而提高了易用性。
数据格式转换所用的APIs,可以应用在任意类型的,甚至是自定义Provider。同样,对于文件同步Provider(FSP),Sync Framework也能够使用转换APIs。
- 变化应用服务(change application service)
旧版本的Sync Framework 包含了一个Change Applier,用于更新操作的实现。在新的 2.0 中,Sync Framework又引入了变化应用服务(change application service)的概念,它提供了与Change Applier相同的功能,但实现时是更为细致。
我们可以在以下场景使用变化应用服务:当目标Provider(Destination Provider)需要 - 比标准Change Applier(Standard Change Applier)更为灵活的更新方法时,我们可以使用变化应用服务。
- 自定义过滤(Custom filters)
与1.0相比,Sync Framework 2.0 对过滤功能进行了增强。2.0 启用了新的Filtered Replica,专门存放要过滤的Item数据。另外,新增过滤跟踪(Filter-Tracking)Replica则是一个独立Replica,可以识别出哪些Item移入或移出了过滤的范围。
以上均为Sync Framework 2.0新功能的介绍,关于具体的使用方法,恐怕每一功能都要用整篇的文章来说明,我将会在未来的文章中来逐一介绍。
关于Sync Framework 2.0 CTP2下载,请点击下面的连接:
http://www.microsoft.com/downloads/details.aspx?FamilyID=89adbb1e-53ff-41b5-ba17-8e43a2e66254&displaylang=en