砌筑导墙:SyncML同步通信协议

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 23:33:19
虽然目前已经有了一些数据同步协议,而且各种新的协议还在不断产生,但它们都有很大的局限性,其中大多数只能支持有限种类的设备、系统及数据类型。这些互不兼容的协议增加了各方面工作的复杂度,而且这类协议的增加会限制移动设备的使用。正是基于此,当今世界的一些通信业先锋才联合起来,致力于开发一种全行业通用的开放性的移动数据同步协议,并将其命名为SyncML。 
SyncML的产生 
最初SyncML行动由Ericsson、IBM、Lotus、Motorola、Nokia、Palm Inc.、Psion以及Starfish Software首先发起,最近又吸收Matsushita加入,从而使其会员达到9家,除此之外还有555家支持公司。开发SyncML的目的就在于,使终端用户、设备开发商、基础构件开发商、数据提供商、应用软件开发商以及服务提供商协同工作,真正实现使用任何终端设备均可随时随地访问任何网络数据。 
SyncML的典型应用是移动设备和网络服务之间的数据同步。除此之外,SyncML还可用于对等的数据同步,如两台PC之间。SyncML的同步过程是由同步双方相互发送一系列消息来完成,消息的格式都在SyncML表示协议中做了具体定义。 
SyncML的消息都是以XML格式的文档定义的,而XML是文本文档标记的工业标准,这必将极大地促进SyncML的推广和普及。 
有了SyncML,网络数据可以通过多种设备同步化,用户可以使用不同的设备(包括掌上电脑、移动电话、汽车计算机、台式机等)访问和操作同一网络数据。此外,用户的个人信息(如电子邮件、通讯录等)能够在用户的不同设备上同时得到更新,并保持一致。比如,用户在掌上电脑上阅读了一封新收到的邮件,那么在他的台式机中,也会自动地将这封邮件显示为已读邮件。有了SyncML,用户还可以在他的移动设备上更多地使用应用软件和信息,如果对这些软件和信息有所更新,可以随时将这些更新信息同步到办公室设备或网络。 
SyncML的总体框架 
SyncML的总体框架如后面的图中所示,其主要组成部分的功能如下: 
App A:是位于服务器端的应用,负责为其他应用提供数据同步服务。 
App B:是位于客户端的应用,请求并接受App A所提供的数据同步服务。 
Sync Engine:位于服务器端,负责在同步过程中分析数据集中所做的改动,检测和解决冲突。客户端也可以有部分类似的功能。 
Sync Server Agent和Sync Client Agent:调用在SyncML同步协议中提供的接口(SyncML I/F)与对方通信。 
SyncML I/F:即SyncML Interface,是SyncML同步协议中提供的接口,它建立在各种底层通信协议之上,与应用无关,由SyncML行动组织定义和发行。 
SyncML客户机通常是移动电话、PDA、PC等,而SyncML服务器可以是专门的服务器或PC。一般情况下是由客户机首先把自己的更改信息发送给服务器,并等待服务器的应答,而服务器在接收到更改信息后要进行同步分析以检测和解决冲突,然后把处理结果和更改要求返回给客户机。但也有些情况是由服务器首先开始同步过程。 
 
七种同步类型 
在SyncML同步协议中定义了七种同步类型: 
● 双向同步 是最常见也最具有代表性的一种同步,其他同步过程都和它有很多相似之处。双向同步总是由客户机首先发起,然后客户端和服务器互换更新信息。同步过程如下:同步初始化;客户端准备要发送的数据;客户端发送自己的更新信息;服务器接收并进行分析处理;服务器返回处理的状态信息和自己的更新信息;客户端接收更新信息并对自己的数据库进行更新;客户端把更新的状态信息发送给服务器,其中包含插入记录的ID映射信息;服务器对客户端发送的映射信息做应答;客户端收到服务器的应答后,把同步结果通知用户。 
● 慢同步 是双向同步的一种。在一般的双向同步中,客户机只是把自己在上次同步过程中所做的修改发送给服务器,而在慢同步中,客户机则把自己所有的数据都发给服务器,服务器逐一比较接收到的数据和自己的数据,以确定客户端哪些数据需要更新,然后把这些更新信息发送给客户端。需要慢同步的情况一般有:设备之间第一次同步;修改日志丢失;同步双方的同步标志不匹配。由于产生慢同步的原因很多,所以客户机和服务器双方都有可能发起慢同步。 
● 客户端单向同步 只由客户机向服务器发送上次同步之后自己更新的信息,而服务器不把自己的更新信息发送给客户端。 
● 客户端刷新同步 属于客户端单向同步的一种。客户机把自己所有的数据都发给服务器,并刷新服务器上的数据。 
● 服务器单向同步 客户机从服务器那里得到上次同步之后服务器所有的更新信息,但不向服务器发送自己的更新信息。 
● 服务器刷新同步 属于服务器单向同步的一种。服务器把所有的数据都发给客户端,并刷新客户端的数据。 
● 服务器发起的同步 前面六种同步方式都是由客户机主动发起的同步过程,而这种同步方式是由服务器首先通知客户端,让其开始某种类型的同步。