您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > SyncML协议翻译
SyncML同步协议(SyncMLSyncProtocol)翻译周鹏2006-1-24摘要本规范定义了SyncML客户和服务的同步协议。它规范了怎样使用SynML表示层协议去完成SyncML客户端和服务端的操作。1.介绍本规范的目的是用SyncML表示层协议(usingtheSyncMLRepresentationprotocol)定义同步协议.本协议的名称称为SyncML同步协议,为不同的同步过程定义协议,同步过程发生在SyncML客户端和服务端.它们间的消息顺序图参考MSC's.本规范包含了一些普通的有用的同步案例.1.1SyncML框架通过SyncML框架(图一)提供的SyncML接口实现本规范.本规范不要求实现SyncML接口的所有特征.图一SyncML框架应用A描述的是一个提供网络同步服务的应用程序.应用B是相同网络上面的设备.服务和设备使用相同的网络传输协议(HTTP).在上图中,同步引擎在SyncML服务器中实现,有时也可以在客户端提供同步引擎.SyncML接口同步服务代理(Syncserver)和客户同步代理(ClientAgent)使用本协议和SyncML接口(theSyncMLinterface'SyncMLI/F')提供表示层协议.1.2设备的角色图二描述了一部作为SyncML客户的手机和一个SyncML服务器同步的例子.SyncML客户发送SyncML消息给SyncML服务器,这个SyncML消息包含了SyncML客户的修改数据.服务器同步数据(包含可能的增加修改删去),数据是服务器的同步消息(SyncMLmessages),之后,同步服务器(theSyncMLserver)返回给同步客户(SynMLClient)它的修改数据.图二移动电话和服务器同步的例子上图提供了一个十分简单的例子,描述了规范中的设备角色:同步客户端(SyncMLClient)-设备包含了同步客户代理,它首先发送它的修改数据给服务器.客户必须能够接收同步服务器(theSyncMLserver)的影响.同步客户端(SyncMLClient)通常首先发送修改,但是,有些情况下服务器会首先初始化同步.同步客户端通常是移动电话设备,个人电脑,PDA设备.同步服务器(SyncMLserver)--它是包含了同步引擎和同步代理的设备.通常是等待通步客户端发发起同步请求和修改数据.当它收到客户的修改数据,服务器处理同步分析并且给客户端响应.同步服务器在传输协议层可以主动的发送命令初始化同步.典型的同步服务器设备是服务设备或者是个人电脑1.3同步类型本规范定了七种同步类型,将在下面表一种介绍表一SyncML同步类型同步类型描述参考两方同步类型(Two-way普通的同步类型,客户端和服务器相互交换修改数据,客户端首先发送修改.第五章sync)慢同步(Slowsync)一种双方同步的形式,服务器需要比较客户端的每一项数据的每一个字段,这种同步方式客户端需要把全部数据发送给服务器.然后服务器进行比较.第五章五节客户端方同步(One-waysyncfromclientonly)客户端发送它的修改数据给服务器,服务器步发送修改给客户端第六章客户端更新同步(Refreshsyncfromclientonly)客户端发送所有的数据给服务器,替换服务器中的数据第六章第三节服务器端单方同步(One-waysyncfromserveronly)客户端获得所有的服务器的修改数据,客户端不发送自己的修改数据给服务器第七章服务器端更新同步(Refreshsyncfromserveronly)服务器发送所有的数据给客户端,替换客户端的数据第七章五节服务器提醒同步ServerAlertedSync服务器提醒客户端执行同步第八章1.4符合和约定参考英文版ThekeywordsMUST,MUSTNOT,REQUIRED,SHALL,SHALLNOT,SHOULD,SHOULDNOT,RECOMMENDED,NOTRECOMMENDED,MAYandOPTIONALinthisdocumentaretobeinterpretedasdescribedin[RFC2119].AnyreferencetocomponentsoftheDeviceInformationDTDorXMLsnippetsarespecifiedinthistypeface.1.4.1MSC名称概念用在消息序列图上面的名称概念如下BOX-一个初始过程或者设备的内部过程Hexagon-开始传输的一个需要条件Arrow-代表一个消息或者一个传输过程2.协议的基础在此章节,所有的同步类型的特征和需求都将被定义.2.1改变日志信息本协议要求所有设备(客户端设备和服务端设备)能够跟踪他们之间的发生的改变和同步.他们需要维护数据项的修改日志信息,修改包含替换,增加,删去.本协议没有规定在设备内部怎样维护这些日志信息.然而,当同步开始的时候,设备必须知道哪些数据项发生了改变.为了标识这些数据项,唯一标识符需要使用.不同的操作也需要标识,比喻是替换增加删去等2.1.1多个设备如果一个设备要和多个设备同步,日志信息必须能够表明在上一次同步之前所有的修改.2.2同步锚点的语法2.2.1数据库的同步锚点为了清楚的同步,本协议使用数据库的同步锚点(参考定义),有两个同步锚点:Last和Next(参考MeaInformationDTD),他们在同步初始化的时候使用.Last同步锚点:表示发送设备发送数据前,发生的一个同步事件,主要记录上一此发生同步的时间戳Next同步锚点:表示当前发送设备发送数据时,发生的同步时间,一般就是当前的时间戳因此,客户端和服务器相互发送各自的同步锚点,锚点信息包含在Alert命令的Meta元素中.接收设备必须响应Next锚点,通过stats元素传回给发送设备.使用同步锚点是规范同步实现,在下以前同步之前,同步服务器需要存储Next锚点.在一个同步session完成之前,存储的锚点不能被更新.一个设备不会最发送给其他设备和从其他设备接收任何的SyncML消息时,一个同步session就算完成了,同步在Sync命令级别完成了.但是,传输还没有完成,只有当传输级的通信完成,才能看作同步完成了.如何同步设备之间的通信没有结束,设备不能更新同步锚点.2.2.1.1数据库锚点的使用例子在这个例子中,一个同步客户和服务器同步两次(同步sesssions#1和#2),在同步session#1之后,同步客户的内存被重设,因此,数据库的锚点和同步session#2的锚点步相同,同步服务器发现这个信息,将对客户初始一个慢同步(slowsync).同步session#1在上网2001.11.10.10:10:10,上一次同步在2001.09.09.09:09:099(在session#1之前),在这个同步seesion中,没有初始化慢同步,因为锚点是相同的.同步session#2在2001.11.11.11:11:11,因为同步客户的内容被从新,服务器初始一个慢同步.在下图中,描述了两个同步session,仅描述了初始化阶段和同步锚点例子3同步锚点的使用2.2.2数据项的同步锚点本协议没有明确的指定如何传输单独的数据项,如何需要这个功能,数据锚点必须在数据项中提供,vCalendar的序列数字属性和电子日历和日程交换数据格式.2.3数据项的ID匹配本协议是建立在同步服务和同步客户都有自己的数据ID标识,服务器和客户的ID标号可能相同,也可能不相同,因此,服务器必须要维护客户ID(LUID)和服务ID(serverID)指向相同的数据项.图四显示了一个同步以后的ID匹配的例子,在这个例子中服务端的匹配表分为两个独立的数据表通常,LUID数据在客户设备端指定,如果服务器增加了一个数据项给客户设备端,客户设备自己指定LUID(设备本地数据项ID),客户端返回这个数据项的LUID给服务器,服务器更新匹配表.当服务器增加一条数据项给客户设备,如果GUID的长度大于客户端定义的临时GUID,服务器不能把实际的GUID发送给客户,服务器必须用很小的临时GUID,临时GUID在客户端的设备信息文档中定义.如果服务器修改了一个存在的数据项(这个数据项在客户设备和服务器中都存在),服务器必须能用客户这个项的LUI标识.客户端修改了数据项,项也是用LUID标识,当修改发送给服务器,服务器能过匹配LUID到GUID通过匹配表.2.3.1匹配操作的缓存在SyncML客户请求一个或多个增加之后,客户端已经完成了这些增加,并且给它们指定了LUID,如果服务器没有明确的规定需要需要一个同步消息的情况下,客户端能够缓存这些LUID的匹配操作.客户端也允许立即给服务器发送匹配操作.如果匹配项被缓存,在接下来的同步session中,匹配操作被发送给服务器.在客户端能处理与这些数据项的时候(增加的但是匹配操作被缓存了的数据项),匹配操作必须送出.如果SyncML服务器有传输控制协议(OBEX),它必须请求一个同步命令的响应.在获得客户的同步命令之前服务器不能断开连接2.4冲突处理服务器和客户端同时修改相同的数据项的时候会发生冲突,一般在服务设备的同步引擎(syncengine)中解决.本协议和表示层协议提供的功能告诉客户端已经解决的冲突.一般认为同步引擎包含在SyncML服务器中,然而,客户端也可以提供同步引擎处理冲突.对于后一种情况,服务器仅仅告诉客户端发生了冲突,客户端能够处理这些冲突.有很多的策略来解决这些冲突,对于常见的策略,SyncML表示层协议提供状态码(statuscodes).服务器的同步引擎能够解决冲突,并且发送冲突信息和冲突是如何解决的.这些通知信息包含在status元素中.下面是一个例子描述了服务器发送状态码给客户设备.StatusCmdID1/CmdIDMsgRef1/MsgRefCmdRef2/CmdRefCmdReplace/CmdSourceRef1212/SourceRefData208/Data!--Conflict,originatorwins--/Status如何管理和配置策略,超出了本协议和SyncML表示层协议的范围2.5安全本协议要求支持基本认证和MD5数字签名,服务器和客户端能够交换授权信息.认证过程参考第三章2.6地址2.6.1设备和服务的地址SyncML规范使用URI标志对SyncMLSyncHdr头元素中的设备和服务地址进行编址。设备通常;连接Internet,要参考URI基础的编址,源可能是:SourceLocURI临时连接的设备,可能是不用它自己的标识机制表示,移动手机设备的源可能是:SourceLocURIIMEI:493005100592800/LocURI/Source如何使用这只类型的编码机制,在传输层和设备和服务地址是比匹配的。2.6.1.1RespURI和Re-direction状态码的用法在SyncML协议规范中第一了RespURI元素。本协议要求设备支持接收RespURI元素,但是可以不支持Re-direction(3xx)状态码。2.6.2数据库的编址在SyncML操作中的数据库编址使用的是URI机制,对客户端和服务端的编址可以使用绝对和相对的URI。在两种情况下,服务端数据库的source元素可以如下:Sync...TargetLocURI./calendar/james_bond/LocURI/Target.../SyncSyncTargetLocURI数据项的编址在SyncMLIte
本文标题:SyncML协议翻译
链接地址:https://www.777doc.com/doc-2851062 .html