SyncML Intensive SyncML 是一种为了结束终端用户,设备制造厂商,服务提供商(SP)和应用开发者之间的无线数据无法同步的数据同步协议.
下面让我们一起来看看无线开发者Chandan Pabla 对SyncML协议(version1.1)的理解和使用客户端/服务器端两边覆盖的同步过程.
1.SyncML的基础:
SyncML是一种主要的开发式的工业标准,为了使远程数据和个人信息通过不同的网络,平台和设备进行同步而制定的.SyncML使的数据非常的容易在不同的网络和网络设备之间进行传输,因为它支持多种传输协议.
SyncML的有点可以总结为一下几点:
(1)可以在不同的网络上工作--包括有限网络和无限网络.
(2)支持多种传输协议,包括HTTP,WSP(Wireless Session Protocol),OBEX(Bluetooth,IrDA),SMTP,pure TCP/IP.
(3)支持通用的个人数据格式,如vCard,vCalendar和E-MAIL等.
(4)对移动设备的存储空间进行了优化. (5)建立在internet协议和web技术上,是可执行而且有很好的协作性的.
2.SyncML的协议描述:
SyncML程序框架是建立在同步描述协议(SyncML Representation protocol)和同步协议(SyncML Synchronization protocol)两个协议的基础上的.同步描述协议定义了同步消息(in XML)的格式描述和在同步框架内工作的细节.同步协议定义了同步客服端和同步服务器端的交互. 为了建立一个适当的SyncML产品,我们必须要了解这个两个协议的相关要求,
同步协议的最重要的几个组成部分:
(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数据格式和慢同步及双向同步,那么服务器就必须具有这样的能力,否则,同步就不能继续下去. 同步的客户端必须在第一次同步或者在设备的静态的信息更新后的时候发送设备信息到服务端。同时,当服务器端请求客户端设备信息的时候,客户端应将自身的设备信息发送到服务端。而一个同步服务器应具备接受和处理设备信息的能力,不论它是否接受过客户端的设备信息或是通过自己请求过客户端设备信息。
分享到:
相关推荐
SyncML(Synchronization Markup Language)是一种开放的标准,用于在不同设备和系统之间进行数据同步,如个人信息管理(PIM)数据、联系人、日历、任务等。它旨在简化跨平台的数据交换,使得移动设备、桌面系统以及...
SyncML(Synchronization Markup Language)是一种开放的标准协议,主要用于设备间的数据同步,如手机、电脑、服务器等。它提供了一种安全、灵活的方式来进行数据管理,包括联系人、日历、任务、邮件等信息的同步。...
SyncML(Synchronization Markup Language)是一种开放的、标准的数据同步协议,主要应用于移动设备和服务器之间的数据同步。这个协议使得用户能够在多种设备间保持数据的一致性,例如联系人、日历、任务、邮件等。...
### SyncML同步协议详解 #### 一、简介 SyncML(Synchronization Markup Language)是一种用于在不同设备之间同步数据的标准协议。它最初由多家科技巨头共同发起,包括爱立信(Ericsson)、IBM、莲花软件(Lotus)、...
SyncML是一种开放的标准,全称为Synchronization Markup Language,主要用于设备间的数据同步,比如手机、电脑、服务器之间的联系人、日程、邮件等信息的同步。它基于XML设计,旨在简化和标准化不同设备间的同步过程...
SyncML协议,全称为Synchronization Markup Language,是一种用于网络设备数据同步的通用框架与XML基表示协议。它旨在实现间歇性连接至网络的移动设备与持续可用的网络服务之间的数据同步,同时也适用于对等(Peer-...
SyncML技术文档详细介绍了SyncML协议的核心概念与应用,它是一种用于移动设备和服务器之间进行数据同步的标准。本文档将深入解析SyncML涉及的同步方式、PIM内容变更的处理、验证与安全机制、DTD格式、数据传输方式,...
SyncML是一种开放标准,用于设备同步和个人数据管理。它允许用户在不同的设备和服务器之间交换数据,如联系人、日历、任务等。SyncML C Toolkit是针对SyncML实现的一个C语言开发工具包,旨在帮助开发者创建兼容...
SyncML协议,全称Synchronization Markup Language,是一种用于设备间数据同步的标准协议,旨在促进不同设备和应用程序之间的数据一致性。该协议定义了客户端和服务端如何通过SyncML表示层协议进行通信,实现数据的...
SyncML协议,全称为Open Mobile Alliance(开放移动联盟)同步协议,是移动设备与服务器间数据同步的标准之一。这个协议的出现旨在解决不同厂商、不同操作系统之间的数据交换问题,为用户提供无缝的数据同步体验,...
SyncML(Synchronization Markup Language)是一种开放的标准协议,主要用于数据同步和管理,尤其适用于移动设备、个人电脑和其他网络设备之间的数据交换。SyncML由一系列公司赞助的SyncML倡议推出,包括了Ericsson...
WiKi 推荐使用的 Syncml 邮箱信息同步,地址:http://en.wikipedia.org/wiki/SyncML 通过 ant build 编译过的源码JAR,还有一个已经调通的例子examples。 测试入口函数在文件 JSync.java 。 SyncML 相关参考...
### 基于SyncML协议的异构数据源同步方法详解 #### 一、移动计算环境与数据同步需求 随着移动设备和无线通信技术的飞速发展,移动计算环境日益普及,用户能够在任何时间、任何地点访问所需信息,极大地提高了工作...
### SyncML客户端应用开发库设计与实现 #### 一、引言 随着移动通信与计算机技术的迅速发展,移动智能设备如智能手机、平板电脑等在人们的日常生活中扮演着越来越重要的角色。这些设备不仅用于通讯,还广泛应用于...
下载的syncml toolkit4.4无法vc编译,所以我就做了一些改动,现在用vc2003能正常编译。 将toolkit源码做了如下改动,在示例里,客户端是pc,服务端是一个Windows Mobile手机,已经经过测试。 1. 用VC2003(pc ...
手机需要的几个重要的syncml OMA协议
### SyncML Protocol与蓝牙同步配置文件 #### 一、引言 在当今高度互联的世界里,数据同步成为了设备间共享信息的关键技术之一。SyncML(Synchronization Markup Language)协议是用于实现不同设备间数据同步的标准...
关于DRM,OMA-Download,SyncML的一些测试点的总结
SyncML报文协议是一种用于设备间数据同步的开放标准,主要应用于移动设备和云服务之间的数据备份与恢复。协议的设计目标是提供一个通用且安全的数据交换框架,支持不同设备和平台之间的互操作性。 在SyncML协议中,...