微软Sync Framework 2.0 RTW 正式发布

 

经过了多个版本的测试,Microsoft Sync Framework 2.0 RTW以下简称MSF 2.0)正式发布了。

着急下载的朋友,请点击这里: Microsoft Sync Framework 2.0 Software Development Kit (SDK)

与先前的CTP1CTP2相比,正式版并没有增加更多的特性,主要修正了测试版中的BUG,使整个产品的稳定性有所提高。 

概括来说,Sync Framework 2.0 RTW 主要扩展了以下功能:

1.    增加了新的特性,用于实现新的场景:在以前版本中实现困难的场景,在MSF 2.0中可以轻松实现(下面将会详细介绍)。

2.    改进了Provider的代码编写方法:在MSF 2.0中,开发人员实现一个新的Provider更为简单(即:使用更少的代码,即可实现上一版本中的复杂功能。)。

3.    支持更多的数据源(Data Source):MSF 2.0内置了新的Provider,用于实现更多数据源的同步。

 

同时,MSF 2.0 RTW 对内核组件进行了改进,并增加了以下新的特性:

1.    新增的以SQL CE SQL 为基础的数据库Provider - SqlCeSyncProvider SqlSyncProvider,均支持P2P同步模式。

2.    新增的Management API,自动产生SQL语句,实现与 SQL Server 的同步。

3.    使用新增的API,可以备份和恢复一个同步数据库,并且不会损失同步元数据(Metadata)

4.    支持0代码实现批次同步。

5.    使用Snapshot模式,可从一个现存的SQL CE 客户端数据库,初始化出一个新客户端。

6.    改进SQL CE数据库的同步性能

 

以下是Sync Framework 2.0 RTW 新特性及新功能的详细介绍:

1. Simple Provider

MSF 1.0 编写过Provider的朋友,应该会有一些感触:开发一个好用的Provider并非易事,需要考虑的方面很多并且开发难度不低。MSF开发组收到用户反馈后,积极寻求解决办法,并针对于此问题推出 Simple Provider组件。

Simple Provider组件的目的是:减轻开发人员的工作量,使编写一个Provider所必须得工作大大降低,特别是针对那些没有同步相关能力的Data Source(数据源),例如:Provider所对应的Data Source不具备 Change Tracking(更改后的追踪)能力,使用Simple Provider组件可以帮助开发人员完成大部分工作,而这些工作在以前是必须的。

·     Simple Provider的设计目标是:让编写Provider变得容易起来,而不再像以前那些,如果完成一个Provider,你不得不成为一个同步专家。:)

·     Simple Provider所作的主要工作是:负责并实现与DataSource的交换,使用Simple Provider后,你只负责实现逻辑代码即可。

Simple Provider同时支持以下更为复杂场景:

·         支持过滤条件

·         支持并发同步操作

·         支持冲突、以及约束冲突处理

·         基于锚点(Anchor)的枚举处理

 

2. 更为灵活的过滤支持

1MSF 2.0 增加了2个新的过滤器

·         基于单元变化的过滤器(Change Unit Filters

·         自定义过滤器(Custom Filters 

以及MSF1.0就已经存在的- 基于项目的过滤器(Item Filter),MSF 2.0 总共支持3个过滤器。

这些过滤器有什么用呢?举例说明:在手机设备中,由于存储容量的限制,联系人一项,或许只会存储姓名电话号码,然后余下的项目存储于桌面电脑中。使用自定义过滤器(Custom Filters)能够让你自由定义过滤条件,并且根据不同的情况(手机环境或桌面环境),你可以随时将某些项目在你的过滤条件种划入或划出,从而提高了过滤的灵活性。

2)过滤内容可传递

新的MSF2.0支持在Source ProviderDestination Provider中传递过滤器的内容,开辟专门的传递通道 - 通过sync Session进行传递。从而达到更为实用的目的。 

 

3. 改进的冲突处理

在冲突管理方面,MSF 2.0 增加了一些新特性,帮助我们更容易的处理各种冲突(Conlfict),主要改进为以下三个方面:

·         约束冲突处理(Constraint conflicts

·         使用日志方式管理冲突(Managing Logged conflicts

·         以及最后一次更新为准的冲突解决方案(Resolving conflicts by using a last-writer-wins policy 

1) 约束冲突处理:

MSF 2.0 能够支持约束冲突的处理,无论约束冲突发生在IteamChange Units中。
处理的流程为:目标ProviderDestination Provider)能够识别并报告一个约束冲突给sync Framework,并且自动调用Sync Framework中的相关组件解决相应冲突。最后,目标Provider决定使用何种方案解决冲突。

2) 冲突日志列表:

·         首先,MSF 2.0 使用日志管理管理冲突,使冲突的管理变得更加容易(比如,现在我们可以简单删除一个独立的冲突)。

·         然后,MSF 2.0 定义了一组接口用于冲突日志处理 - 帮助 MSF 管理日志列表中的冲突。

无论如何,将冲突保存成日志列表是非常实用的。使用日志,我们可以从区分出不同的冲突,并能够单独对其进行处理。比如说:用户可以预览冲突,分析并做出最终决定,并最终正确的处理、解决冲突。

3) 最后更新为准的冲突解决方案

实际应用中,应用程序在处理并发的冲突时,通常会以最后的更新为准(Last Wins)。MSF 2.0 可以让您的应用程序具备这种能力,无论冲突发生在源Replica或是目标ReplicaSync Framework能够比较两者的更改时间,并以最后发生变化的时间为准,完成冲突的处理。
最后,MSF2.0改进的 Simple Provider 冲突处理Simple Provider 包含了一组冲突处理接口,使用他们处理并发和约束冲突时,可以指定相应的解决方案予以处理,从而降低了开发难度。

 

4. Provider之间的数据转换

1)为什么要进行Provider之间的数据转换?

在绝大多数场景中,Provider之间所同步的- 均为相同格式的数据(比如说在两个数据库Provider之间,同步销售数据)。但在实际应用中,很多时候要求使用不同的Provider进行同步(例如同步的双方,一方是数据库Provider,另一方是文本的Provider,各自内部的的数据格式不同 - 这时候就需要用到“Provider之间的数据转换

2)如何转换?

MSF 2.0 新提供了一组接口API - 可以将一种数据格式,转换为另一个接口所要求的格式(Data Format),从而实现同步。

3)接口APIs

转换 数据格式 所用的APIs非常灵活,我们可以将其应用在任意类型的,甚至是自定义Provider。同样,对于已有的Provider – File Sync Provider(文件同步Provider),转换APIs也同样适用。

 

5. 跟踪机制(Tracing

使用过MSF 1.0的朋友应该感触颇深,同步过程中环境复杂、数据繁多,当遇到问题时,调试起来并不容易,而且很难快速定位问题所在。

为了应对这种情况,MSF 2.0增加了更为强劲跟踪机制,使用其组件,可以方便的对同步应用程序进行跟踪、调试。

开启跟踪机制后,MSF 2.0 将会自从生成 .TMF 文件,用于存放同步所产生的Log数据。

关于跟踪机制更多信息,请查阅在线帮助的“Tracing Sync Framework Components”章节。

 

6. 全新的数据库provider Database Providers

1)新增数据库Provider

支持3种数据库,即:SQL ServerSQL Server Express SQL Server Compact,同时支持 hub-and-spoke peer-to-peer 两种同步模式。

2)在易用性上,MSF 2.0 改进了数据库Provider初始化、同步方法:

·         自动创建数据库相关的全部触发器、跟踪表、以及Tomb表。 

·         内置的数据库Provider之间同步,不需要撰写任何额外的代码。

使用新的、内置数据库Provider,能够自动生成 - 全部的初始化代码与同步代码,不用撰写任何SQL语句即可完成表初始化,也不需要撰写额外的代码即可实现同步。
举例来说:在 Sync Service for ado.net 1.0 时,你需要使用专用工具修改Sql Server原表完成初始化,如:添加 跟踪列、触发器,以及Tomb表。而在MSF 2.0 环境下,新的数据库Provider将会自动帮你完成所需的一切。新的数据库Provider自动完成初始化:在Sqlserver端建立跟踪表与触发器,而且不会更改原表结构(这是一个亮点)。与 1.0 相比,这个改进带来不小的便利。

[关于 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-peerP2P同步) 与其不同,抛弃了客户端、服务端的概念- 即:任何一个数据库端点,都可以作为服务器端、或客户端使用,大大提高了同步灵活性。peer-to-peer支持任意两个数据库直接实现同步。

3) 新的数据库Providers能够支持以下特性:

·         提供灵活的初始化选项,你现在能够选择:同步生成Schema,还是从现有表复制Schema

·         支持基于DataSize(指定数据大小)的批次同步(Batching,不像过去那样,仅能指定行数进行批次同步

·         增加维护任务支持,比如定时清除MetaData和恢复服务器端数据库等

 

4) 内存中完成批次同步

MSF 1.0 的批次同步存在着一些不足,尤其是稳定性上稍有欠缺。MSF 2.0 的批次同步改用内存中完成,从而提供稳定性。

MSF 2.0 做了以下改进:

·         修复了MSF 1.0Bugs

·         提供了稳定、全面的批次同步的APIs

·         实现批次同步代,开发人员不必撰写任何代码,MSF 2.0 予以代劳。

·         MSF 2.0 批次同步在内存中完成,其稳定性远胜于1.0 - 基于行的批次同步,另一方面也避免了内存溢出等问题。

5) 数据库初始化相关API的改进

如上章节6.2所讲,MSF 2.0 改进了数据库Provider初始化、同步方法,同时还有以下改进:

·         支持对已存在数据的数据库,进行初始化

·         支持空数据进行初始化

·         自定义创建用户Schema

·         同步时,自动创建用户Schema

·         从已有的数据库中,复制创建Schema

 

6) 性能改进

测试结果证明,MSF 2.0 性能的某些方面可以与RDA媲美,甚至比RDA更快。与Merge相比,MSF同步技术具备更大的扩展空间。

测试环境模拟了一个大数据量的同步场景,一个Server与上千个Client同步,数百个同步并发操作。

 

7. 改进的 文件provider File sync Provider

1 支持Providers之间的数据转换

如上章节4所讲,新的File Sync Provider支持与其他Providers之间进行数据格式转换,可以使用托管代码,完成转换过称。

新的File Sync Provider支持与其他的Provider(甚至非File Provider)进行同步,使用数据格式转换接口APIs,可以实现与自定义Provider或其他类型的Provider同步。
 

2 更好的文件传送性能

性能提升主要在已经复制的数据。
举例来说:一个文件我们已经完成了同步。当此文件发生变化后,需要重新同步时,当前文件已经复制的数据将不会再次被传送,新的File Sync Provider只会传送差异的部分,从而提高了性能。

通过这项改进,新的File Sync ProviderMSF 1.0 相比,提高了30%的性能。

3 同步更为稳定

旧版的File Sync Provider存在2个小缺陷,第一:遇到单个问题同步失败,可能会引起整个同步过程的终止。第二:同步失败后没有详细的错误信息。高兴的是,这两个问题都在MSF 2.0 中修复了。

新版的File Sync Provider同步更为稳定,在同步过程中,单个同步失败(哪怕是网络引起的)不会影响整个同步过程,同步将会继续进行直至全部完成,最后能够提供一个详细的错误列表。

 

相关的资源连接:

Sync Framework 更多的信息,请点击这里查看:Sync Framework Developer Center

下载Sync Framework,请点击这里:Microsoft Sync Framework 2.0 Software Development Kit (SDK)

 

给对MSF感兴趣的朋友:

如果你以前没有接触过MSF,但对此有兴趣,建议你尝试使用一个同步小工具SyncToy 2.1,这是微软基于MSF 2.0 开发的一个小软件,非常好用。

SyncToy 2.1 下载请点击这里: http://www.microsoft.com/downloads/details.aspx?familyid=C26EFA36-98E0-4EE9-A7C5-98D0592D8C52&displaylang=en.http://blogs.msdn.com/aggbug.aspx?PostID=9920608

如果使用中有问题,可以到这里咨询:http://social.microsoft.com/Forums/en-US/synctoy/threads

 

若有MSF相关问题,请给我留言,我们一起讨论研究。

 

·         作者:梁一鸣

·         出处:http://liangyiming.cnblogs.com

·         本文版权归作者梁一鸣与博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出作者名称及原文连接,否则保留追究法律责任的权利。

 

 

posted on 2009-11-17 17:21  梁一鸣  阅读(2871)  评论(7编辑  收藏  举报