2. SyncML的几个概念(1.2)
1.Anchor-- timestamp(Last,Next),initiate slow sync2.ID Mapping -- LUID(device) GUID(server) server maintain map LUID and GUID.3.Security -- MD5 (128 bit),basic (64 bit)4.Address (Device:IMEI/Server:URI)5.Exchange of Device Capabilities6.Device Memory Management(Free memory)7.Multiple Message in package--<Final/> 2228.Large Object Handling -- <MoreData/> 2139.Suspend and Resume session-- suspend -- 224 Alert code to ‘Interrupt Session’ resume -- 225 device Alert code to ‘Resume Session’,Server uses the previous Sync type
3. SyncML 协议的组成 SyncML Common是一组基本的协议,DM和DS各自的协议派生自Common协议。 4. SyncML的XML semantics <SyncML> <SyncHdr> //包括Msg,Target,Source,authentication等 <SyncBody> //包括命令,数据,devInf等 SyncML是请求-应答的协议,响应方对于每个Cmd都回应一个Status,操作的结果显示在<Data> e.g - < Status > < CmdID > 12 </ CmdID > < MsgRef > 2 </ MsgRef > < CmdRef > 5 </ CmdRef > < Cmd > Add </ Cmd > < Data > 201 </ Data > < SourceRef > 1 </ SourceRef > </ Status > 5. 如何实现Sync 最基本的同步可以看作3个来回,即6个package的交互。D->Device , S->Server Package #1 (D->S): 包括安全验证(Cred), Application path: contact/calendar/task (Alert), Capability negotiation: deviceinfo (Put) Package #2 (S->D): 返回Anchor和同步类型(two-way/slow sync/...) Package #3 (D->S): Device用Add/Update/Delete 命令把Device需要同步的记录发过去 Package #4 (S->D): Server对Device的命令返回status code表明Server是否接受,用Add/Update/Delete 命令把Server需要同步的记录发给Device Package #5 (D->S): Device对Server的命令返回status code表示Device是否接受,再把Map(LUID & GUID) 的映射关系通知Server Package #6 (S->D): Server对Map返回status 5.1 Slow Sync Slow Sync 是可以由Server来initiate, Server会根据协议中规定的Anchor(timestamp)来于Device的Anchor做比较,返回status code 508 来通知Device做Slow Sync. 5.2 Two way Sync Device可以维护一个增量表,用于记录Application和Server对data store(contact/calendar/task)的修改变化,因为一个device可以与多个Server同步,所以针对每个Server必须有一个Cursor来记录不同于上次同步的变化。 6. 数据同步的几种类型Alert Codes used at the synchronization initialization
200
TWO-WAY
Specifies a client-initiated, two-way sync
201
SLOW SYNC
Specifies a client-initiated, two-way slow-sync.
202
ONE-WAY FROM CLIENT
Specifies the client-initiated, one-way only sync from the
client to the server
203
REFRESH FROM CLIENT
Specifies the client-initiated, refresh operation for the oneway only sync from the client to the server.
204
ONE-WAY FROM SERVER
Specifies the client-initiated, one-way only sync from the
server to the client
205
REFRESH FROM SERVER
Specifies the client-initiated, refresh operation of the oneway only sync from the server to the client.
Alert Codes used by the server when alerting the sync
206
TWO-WAY BY SERVER
Specifies a server-initiated, two-way sync
207
ONE-WAY FROM
CLIENT BY SERVER
Specifies the server-initiated, one-way only sync from the
client to the server
7. 数据同步命令命令名称
在 SyncML 服务器环境中的功能描述
Add
用于指示服务器在客户机的数据中建立了新的内容(比如说在电话本中新建一项)
Alert
用于通知服务器。所谓通知就是一些同步请求,其中携带了表示客户机数据库状态的数据。请参考 example.xml 中 CmdID2 和 3 的 Alert 命令,它们请求的是同步日历与电话本。 Data 元素所关联的代码指明了请求的类型,在这个例子中类型为 201 ,意思是“慢同步”(Slow Synchrionization)。在“SyncML Sync Representation 勘误信息”规范中可以找到这些代码的完整列表(请参阅 参考资料)。
Copy
请求在接收者数据库中的其他位置创建某个项的拷贝。
Delete
请求从服务器的数据库中永久删除某项。
Get
显式地请求根据所请求的 URI 从服务器数据库中获取数据项。
Map
用于维护将本地资源标识与远程资源对应的映射表。比如说,移动电话上的某项资源可能具有一个2字节的标识,而在服务器上,同一项资源的 ID 则用一个16个字符的字符串表示。
Put
用于将数据项上传到服务器指定的 URI 处。比如说 example.xml 中处理 CmdID 1 的 Put 命令。这一命令请求服务器将电话的容量(已经 SyncML Device Information DTD 编码)存储到相对 URI /devinf10 处。 Put 命令在设备同步之外使用。
Replace
请求将指定的对象替换成同步信息中的一部分。
Results
用于携带 Get 等请求返回的结果对象。
Status
用于返回与请求相关的状态代码。
Sync
用于将一组命令(如 Add、Replace 、及 Delete )封装成一次同步。
Related information Socket 一组用于计算机之间连接通信的编程接口,不同OS,语言有不一样的实现。C++依赖OS的实现,而Java语言本身支持Socket。 XML Valided XML: DTD(一组规范XML的element/attribute的定义)Appendix
IMEI
IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。
IMEI为TAC + FAC + SNR + SP
1、前6位数(TAC)是"型号核准号码",一般代表机型。2、接着的2位数(FAC)是"最后装配号",一般代表产地。3、之后的6位数(SNR)是"串号",一般代表生产顺序号。4、最后1位数(SP)通常是"0",为检验码,目前暂备用。IMEI码贴在手机背面的标志上,并且读写于手机内存中。它也是该手机在厂家的"档案"和"身份证号"。
