【Android】SyncML协议研究

 SyncML程序框架是建立在同步描述协议(SyncML Representation protocol)和同步协议(SyncML Synchronization protocol)两个协议的基础上的.同步描述协议定义了同步消息(in XML)的格式描述和在同步框架内工作的细节.同步协议定义了同步客服端和同步服务器端的交互.
下面是同步协议的最重要的几个组成部分:

(1)Change log
    开始一个同步协议的操作时,SyncML协议需要在客户端和服务器端的各自的数据库中维护信息的交换或修改(如替代,增加,删除数据等).SyncML通过一种被称为change log的信息跟踪机制来解决客户端和服务器端的信息交换或修改的问题.SyncML并没有描述change log的格式信息,但是进行同步的每个设备必须能够详细的描述设备上每个数据项从上次同步时的修改的详细情况.

(2)Map operation(操作的映射)
    同步操作是基于客户端和服务器端的数据库中每个数据元素都有一个唯一标识(IDS)的原则来进行的.客户端ID被称为本地唯一标识(locally unique indentifier LUID),服务器ID被称为全局唯一标识(globally unique identifier GUID).这个ID在服务器和客户端可以相同,也可以不同.如果这个IDS是不同的,那么服务器端就必须保留一个ID的映射,保证服务端和客户端的数据交换的一致性.LUIDS总是由客户端设备来分配的.这就意味者即使是通过服务端添加一个数据项到客户端设备,也是由客户端为这个数据项分配LUID.分配完成后,客户端将通过Map operation把LUID发送到服务端,服务端将更新MAPPING表中数据项的LUID.

(3)Sync anchors(同步锚)
    当一个同步会话被初始化的时候,总是有两个锚被发送,一个是最后一次同步的锚一个是下一次同步的锚.最后一次的锚描述了发起同步设备发起最后一次同步事件的时间点;下次同步锚描述了发起同步动作设备的当前的同步事件的时间点.通过这种方式,在服务端和客户端交换各自的同步锚.当接收一个NEXT SYNC ANCHOR时,接收设备必须保存它直到下次同步,当下次同步到来的时候,接收设备将比较两次的同步锚并发送最后一次的同步锚,以判断是否在同步时有数据失败.如果最后一次同步锚和下次同步锚匹配,接收设备将认为没有错误并结束同步会话的初始化.如果不匹配,接收设备将从其他设备请求一个适当的动作,比如慢同步.当同步会话成功并结束后,同步锚将被保存.

(4)Confict resolution(冲突解决方式)
    当同一个数据项在客户端和服务器端同时被修改后,数据的版本冲突就产生了,对同一数据项将产生两个不同版本的数据.同步协议必须有一种策略解决这样的冲突.在SyncML中,冲突策略是同步引擎的一个基本功能,通常是由同步引擎的同步服务器来解决版本冲突问题,也有可能有写客户端设备提供解决这一问题的解决方式.
在同步描述协议提供了通过通知同步客户端冲突决定和状态码的通用解决方案.如果同步引擎的服务端确定一个冲突,服务端将使用状态码和通知功能通知同步客户端并定义解决方案.下面是一些常用的状态码和冲突解决策略:
     <1>207:数据合并
     <2>208:客户端优先
     <3>209:数据复制

(5)Security(安全性)
    SyncML为了安全的数据同步提供了框架.SyncML本身并没有提供新的安全机制,但是它提供了安全验证框架和在不同的网络层进行安全验证的机制.
SyncML协议在三个不同的层次定义了用户验证机制,这个三个层分别是:服务器层,数据库层和对象层.SycnML只要求它的安全验证机制在服务器端被支持就可以了.为了使用SycnML协议,同步的客户端和服务器端必须支持基本的MD5验证.在数据库层面和对象层面的安全验证是可以选择的.

(6)Device capabilities(设备性能)
    SyncML协议通过一个初始化设置可以使不同性能的客户端设备和服务器端进行信息的交换.任意一个设备(客户端或服务端)都能请求信息交换,只要客户端设备性能和服务端能协同工作,他们就能让一个同步会话继续下去.
有两种类型的信息在设备和服务器端进行交换:
    <1>设备信息:包括设备类型,数据模块和制造厂商信息.
    <2>服务器信息:描述了客户端或服务器端支持的数据对象的特性.如果客户端支持vCard version 2.1数据格式和慢同步及双向同步,那么服务器就必须具有这样的能力,否则,同步就不能继续下去.
同步的客户端必须在第一次同步或者在设备的静态的信息更新后的时候发送设备信息到服务端。同时,当服务器端请求客户端设备信息的时候,客户端应将自身的设备信息发送到服务端。而一个同步服务器应具备接受和处理设备信息的能力,不论它是否接受过客户端的设备信息或是通过自己请求过客户端设备信息。

【Android】SyncML协议的七种同步类型

(1)Two-way sync:双向同步是客户端和服务器端交换有关任何修改的数据信息的一种常用的同步类型。
(2)Slow sync:慢同步是双向同步的一种特别的形式。慢同步就是将客户端数据库的数据和服务器端的数据库数据逐个进行比较。如果客户端和服务器端的同步锚不匹配或客户端或是服务器端的修改日志遗失时将会请求一个慢同步。实际上,慢同步就意味着客户端发送所有的数据到服务器端,服务器端对客户端的所有数据进行逐个字段的分析,比较,并将服务段的数据发送到客户端。在同步分析完成后,服务端将所有的修改信息返回客户端。然后,客户端返回所有的数据的映射信息,并添加到服务端。
(3)One-way sync from client only:客户端优先同步,是客户端发送修改信息到服务端,但是服务端的修改信息并不被发送到客户端。
(4)Refresh sync from client only: 从客户端同步刷新,这里客户端为服务端提供所有数据的浏览,服务器根据客户端的修改来更新服务端的数据。
(5)One-way sync from server only:服务端同步优先,这个同步方式是客户端从服务获取所有的修改信息,但是客户端不发送修改信息到服务端。
(6)Refresh sync from server only:从服务端刷新同步,这里假设服务端为客户端提供所有的数据的预览,客户端将更新目标数据库中的数据,更新数据由服务器端发送到客户端。
(7)Server-alerted sync: 服务通告同步,服务器端通知客户端需要发起的同步类型指令给服务端。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值