《SyncML基本流程》PPT课件.ppt
SyncML基本流程,张程2011-12-07,概述,SyncML(Synchronization Markup Language)是一平台无关的信息同步标准协议集。分为SyncML数据传输协议(SyncML-DS)和SyncML设备管理协议(SyncML-DM).原来的大部分同步解决方案绝大部分依赖于某个厂商、应用,或者是某个操作系统,SyncML的目的就是提供一个开放标准,目前已经得到Nokia、Symbian,Motorola,Sony Ericsson、Siemens AG等大部分公司的产品的支持。手机通讯录的同步和备份是SyncML协议之前的最主要应用,SyncML服务器端和客户端数据传输基于下层的网路传输协议,如obex,wsp,http等。增值业务提供商也已经提供基于SyncML协议的同步服务,可以让手机用户通过GPRS网络上传或下载通讯录数据,避免手机丢失或更更换手机时遗失重要通讯录数据的麻烦。从SyncML 1.2起,协议开始支持对电子邮件,目录和文件进行同步。,历史版本,1.0.1:最初版本,定义客户端和服务端设备同步标准1.1.x:增加Large Objects、UTC、最大对象size和改动数量支持文档被分为SyncML Common、SyncML DS和SyncML DM,1.1.2版本时改名为OMA-DS.1.2.x(20090319):支持中断和续传、记录和域过滤、分层数据对象同步、域级替换规范文档中独有的数据格式被分到独立的数据对象定义规范中2.0(20110719):重定语法和语义,增强类型检查,优化减少交互流量,Fingerprint机制增强中断恢复能力,设备信息允许部分返回,sub-parts同步及增强的数据加密能力,SyncML Framework,报文基本结构,1.2SyncML/1.213221028194574http:/192.168.5.10/funambol/ds;jsessionid=1692893B7C2ECF0D6AE015DFB0F5C34F4491104f06700516130SyncHdrhttp:/192.168.5.10/funambol/ds;jsessionid=1692893B7C2ECF0D6AE015DFB0F5C34F4491104f067005162002cardnameebencard,常用同步命令,Add Alert Copy Delete Exec Get Map Move Put ReplaceResults Search Sequence Sync.,七种同步方式,两方同步:客户端和服务器交换修改数据,客户端先发送慢同步:双方交换所有数据,发生在第一次及发生失败后客户端单同步:客户端发送修改数据给服务器,服务器不发送数据给客户端客户端更新同步:客户端发送所有数据给服务器,服务器需要用客户端数据替换指定数据库中所有数据服务器单同步:服务器发送修改数据给客户端,客户端不向服务器发数据服务器更新同步:服务器发送某个数据库所有数据给客户端,客户端需要替换该数据库所有数据服务器通知同步:服务器通知客户端启动一个指定方式的同步,数据修改状态信息,保存数据修改的log信息,以备更新时做相关对比操作NumberOfChanges,Sync Anchors,分为Last Anchor、Next Anchor,基于时间戳,同步初始化时发送,客户端和服务器有各自的锚对,通过Alert操作传递,接收者必须将Next anchor在对Alert的Status中回发给发送者Last Anchor:上一次同步锚,接收者用本机存储的last anchor与发送者发送的Last Anchor对比,如果匹配,说明上次的同步成功,否则认为失败,启动相应措施,如慢同步等Next Anchor:本次同步锚,在同步结束后才能保存为last anchor,在传输层正常断开后,Sync Anchors,上一次同步成功,Sync Anchors,上一次同步失败或数据异常,ID Mapping,LUID/GUID of Data Items,ID Mapping,Map操作更新ID映射LUID:由客户端分配,服务器add数据到客户端时,使用临时GUID,客户端在设备信息中告诉服务器最大临时GUID号,服务器必须使用小于该值的临时GUID,然后客户端接收数据后分配新LUID其他操作均使用LUID,服务器根据映射表识别数据项所有新增的数据都需要client使用Map通知server更新映射表客户端缓存Map服务器可能显式不要响应,或其它异常不能接收,客户端可以缓存Map在下一次会话时发送给服务器,才能完成相关数据的同步,冲突处理,冲突解决通知,1 1 2 Replace 1212 208,寻址,URIHTTP/OBEX/WSPURNIMEI/ESN/MEID,Device and Service Addressing,http:/www.syncml.org/sync-server IMEI:493005100592800,Database Addressing,./calendar/james_bond.http:/www.syncml.org/sync-server/calendar/james_bond.,Addressing of Data Items,.101.,设备能力交换,时机:1.第一次同步2.设备信息变化3.对方请求*不需要每次都发*不支持的能力不发*对方不用的不发,设备内存管理,动态内存信息同步时交换静态内存信息初始化时交换 1./calendar/james_bond./dev-calendar 8100 81.,多报文包,包数据超过一个报文的最大限制只有最后一个包带Final标志服务器请求Next msg,使用Alert 222,大对象处理,大对象处理,大对象处理,分层数据同步,和,无初始化同步,同步锚信息及证书与Sync命令在一个报文中发送安全问题引起慢同步发错服务器,同步中断和续传,主动停止Alert 224 SUSPEND被动中止网络原因或其它异常会话续传Alert 225 RESUME,同步主动停止,1 224 http:/http:/IMEI:004400061769830 2 3 1 Alert http:/IMEI:004400061769830 200,同步续传,续传响应状态,续传报文,1 225./Contact/Contacts./CSystemDataContacts.cdb 20021101T124234Z.,续传响应报文,.2 1 1 Alert./.Contact/Contacts./CSystemDataContacts.cdb 200 20021101T124234Z 3 201./CSystemDataContacts.cdb./Contact/Contacts 1 2.,忙信号,1 20SyncHdr http:/www.syncml.org/sync-server IMEI:493005100592800 101,忙信号,1 221 http:/www.syncml.org/sync-server IMEI:493005100592800,鉴权,1.1.2以后,对服务器不强制鉴权必须支持basic和MD5 digest访问鉴权1)主动认证Cred2)被动认证-客户端不带Cred请求-服务器响应401/407包括Chal(Authentication Challenge)-客户端重发Cred,两层鉴权,服务器层鉴权Cred in SyncHdr数据库层鉴权Cred in Alert/Sync,同步初始化,处理SyncML级的鉴权(Alert)指定同步数据库及同步类型(Alert)交换服务(Put/Get)和设备(DevInf)能力,客户端初始化请求,1.2 SyncML/1.2 4 1 http:/www.syncml.org/sync-server IMEI:493005100592800 syncml:auth-basic QnJ1Y2UyOk9oQmVoYXZl 5000 1 200./contacts/james_bond./dev-contacts 234 276,2 application/vnd.syncml-devinf+xml./devinf12 Big Factory,Ltd.4119 Janes phones 2.0e 2.0 1.22I 1218182THD000001-2 phone./contacts Phonebook 32 text/x-vcard 2.1 text/x-vcard 2.1,text/x-vcard 2.1 BEGIN VCARD END VCARD VERSION 2.1 N TEL 5 TYPE VOICE,CELL VOICE,HOME NOTE,1 255 PHOTO 1 TYPE JPEG 01 02 07,3 application/vnd.syncml-devinf+xml./devinf12,服务器初始化请求,1.2 SyncML/1.2 4 1 IMEI:493005100592800 http:/www.syncml.org/sync-server syncml:auth-basic QnJ1Y2UyOk9oQmVoYXZl 1 10SyncHdr http:/www.syncml.org/sync-server IMEI:493005100592800 212,2 1 1 Alert./contacts/james_bond./dev-contacts 200 276 3 1 2 Put./devinf12 200 4 13 application/vnd.syncml-devinf+xml./devinf12,Small Factory,Ltd.Tiny Server Tiny Shop 485749KR Server./contacts Addressbook text/x-vcard 2.1 text/vcard 3.0 text/x-vcard 2.1 text/vcard 3.0,text/x-vcard 2.1 BEGIN VCARD END VCARD VERSION 2.1 N TEL 8 TYPE VOICE,CELL VOICE,HOME FAX,HOME NOTE 1 1024,PHOTO 1 TYPE JPEG GIF text/vcard 3.0 BEGIN VCARD END VCARD VERSION 3.0 N,TEL 8 TYPE VOICE,CELL VOICE,HOME FAX,HOME NOTE 1 1024 PHOTO 1 TYPE JPEG GIF 01 02 03 04 05 06 07,5 200./dev-contacts./contacts/james_bond 20040119T081812Z 20040120T093223Z,同步流程,两方同步(TWO-WAY SYNC)客户端更新修改到服务器服务器更新修改到客户端客户端更新数据状态服务器映射确认慢同步第一次或者同步状态丢失时启动错误处理,同步流程,客户端单方同步客户端更新修改到服务器获取服务器状态客户端刷新同步错误处理,同步流程,服务器单方同步发送Sync Alert到服务器服务器更新修改到客户端获取客户端数据更新状态从服务器获取映射确认服务器刷新同步错误处理,同步流程,服务器通知同步0号包(Server Alerted Sync package)鉴权必须使用MD5鉴权服务器通知同步包结构包语法域描述,文件同步,数据内容描述 application/vnd.omads-file+xml name text 260 File name body bin 65535 File body enc base64 quoted-printable created datetime,Date created modified datetime Date modified accessed datetime Date accessed cttype text File type attributes struct File Attributes h bool Hidden a bool Archived,文件同步命令,.6 application/vnd.omads-file+xml 123.OMA-DataObject-File.doc 20030807T231830 20030809T015500 false true.,文件夹同步,文件夹数据内容描述,application/vnd.omads-folder+xml name text 260 Folder name created datetime Date created,文件夹同步命令,.6 application/vnd.omads-folder+xml 123 345.OMAFiles 20030807T231830.,通知码定义,异常码,401 Invalid credentials 403 Forbidden404 Not found407 Authentication required418 Already exists 420 Device full 500 Command failed 503 Server busy506 Processing error508 Refresh required510 Data store failure511 Backend auth error,