嵌入式系统数据同步协议---SyncML协议

概述      
        SyncML 是目前行业通用的移动数据同步化协议。它由 SyncML initiative 制定,是一种开放性协议。 SyncML initiative 最初由行业先锋 Ericsson, IBM, Lotus, Motorola, Nokia, Palm Inc., Psion, Starfish Software 初创, Matsushita 最近也加入其中,使其会员达到 9 家。另外还有 555 家支持公司。 SyncML initiative 的目的就在于,与终端用户、设备开发商、数据提供商、基础构件开发商、应用软件开发商及服务提供商协同工作,以真正实现使用任何终端设备均可随时随地访问任何网络数据。  
        有了 SyncML ,用户就可以在他的移动设备上更多地使用应用软件和信息,如果对这些软件和信息有所更新,可以随时将这些更新同步化给办公室设备或同步化到网络上。           
 
协议构成
        200211月,SyncML initiative合并到了OMAOpen Mobile Alliance)。原有的SyncML标准被OMA整理分割成三个部分:SyncML common specification, Data synchronization specificationDS)和Device Management specificationDM)。每个部分都包含了一系列的标准。OMA将原来SyncML中同步和设备管理标准中公用的部分提取出来组成了SyncML common specification,彼此不同的部分仍然保留在各自的协议中。所以你会看到一些奇怪的现象,比如SyncML common specificationDMDS中都包含了一个representation protocolDM中的representation protocolDS中的没有任何重叠部分,他们两个公用SyncML common specification中的representation protocol     
       OMA SyncML 从功能角度可以划分为四大部分:
1.          XML-based representation protocol
2.          OMA SyncML common
   3.          OMA Data Synchronization OMA device Management
   4.          Tansprot binding for protocol
        
当前状态
         2006年7月份刚发布了DS 1.2版本。
         2007年2月份刚发布了DM 1.2版本,正在进行DM 1.2.1修订工作,同时在准备DM 2.0的工作,预计明年初启动。
 
通用同步协议的描述
        通用同步协议的目标是普遍适用,同步两端可以是任何一种类型、在任一种网络上面,这样会:
  •  同步网络数据与任一种移动设备
  • 同步移动设备与任一种网络数据
        数据同步协议会同步网络数据和很多不同的设备,包括掌上电脑、移动电话、自动计算机和桌面计算机。一个用户可以在不同的设备上访问、操作同样的数据集合,举个例子,用户可以使用掌上设备或者移动电话阅读电子邮件,还可以维护一个一致的、更新的纪录。
同样的,同步两端可以使用任意类型,这使得移动设备可以支持更多数据类型,包括电子邮件、日历、事务管理信息、数据库中的企业数据和Web文档。这种功能使得想要通过电子邮件接收订单的用户可以在同样的设备上访问公司的目录清单系统,用来最后决定交付日期。
实现这个目标,协议需要下列特性:
  • 可以有效的在有线和无线网络上运作
  • 支持多种传输协议
  • 支持任意的网络数据
  • 可由多种应用程序访问
  • 考虑到移动设备的资源限制
  • 构造于现有的全球互联网和Web技术之上
  • 协议最小功能就是赋予所有设备最常用的同步能力

SyncML 底层通讯
1 绑定Http
1.1 Tcp 传输服务
        Http通信一般是在 Tcp连接之上的,这个绑定不是必需的,如果Http基于其它的协议,那么需求也和下面Tcp定义的相似
1.1.1 连接
        在Http客户端连接到Http服务器端的时候,SyncML客户端建立一个Tcp连接在客户和服务器之间通过使用Tcp open操作,在超时的情况下还需要SyncML客户端从新建立连接。
1.1.2连接选项
        关于端口和协议版本的一些选项。
1.1.3 断开连接
        当连接不需要的时候,SyncML客户端负责使用tcp close操作结束连接。如果固定连接存在于Http请求中,Http连接的关闭有Http客户端来完成,当Http客户端接收到来自服务器的Http应答中指明这是最后一个SyncML的包。
1.1.4 终止
        有时候非正常时间发生会要求应用程序中断Tcp连接,这种情况下,Tcp从新初始化来结束当前连接。
1.1.5 超时
        当服务器超时,SyncML客户端需要重建一个新的HTTP会话并且Http服务器端会尝试从新发送当前的SyncML包
1.2. SyncML信息交换
        一旦Http连接建立,一个或者多个SyncML消息会通过连接由SyncML客户端传输,它们存在于Http客户端的请求或者Http服务器端的应答中。
在Http请求中POST方法用来传递SyncML消息。
1.2.1 每包一个消息
        下面是Http请求的部分代码:

POST ./servlet/syncit HTTP/1.1 Host: www.datasync.org Content-Type: application/vnd.syncml-xml; charset="utf-8" Content0Length: 1023 Accept: application/vnd.syncml-xml
        下面是Http应答的部分代码:

HTTP/1.1 200 ok Content-Type: application/vnd.syncml-wbxml; charset="utf-8" Content-LengthL 1023 --HTTP body---
1.2.2 一个包里包含多个消息
        每一个Sync消息必须使用SyncML MIME媒体类型在HTTP请求或应答中传递,当每个包里有多个SyncML消息的时候,每一个消息是否在分离的HTTP请求或应答传递依赖于它是否是SyncML的请求和应答。可以根据每一个SyncML消息是否有最后一个元素来判断这个包中是否有更多的SyncML消息,如够有最后一个元素,那么这消息就是该包中最后一个消息。
1.3 传输命令
        HTTP使用一系列的命令,包括传输方法,头部信息,请求的头部信息,应答的头部信息
1.3.1 传输方法
        SyncML客户端必须使用POST方法或者可以使用CONNECT方法(如果支持的话)来给SyncML服务器发送SyncML请求。CONNECT方法用来初始化SSL会话以验证HTTP客户和服务器,其他的方法目前没有用在SyncML客户端。
2 绑定Obex
3 绑定Wsp
 
同步类型
   本规范定了七种同步类型,将在下面表一种介绍
   表一 SyncML同步类型 
同步类型  
描述  
两方同步类型 (Two-way sync)
普通的同步类型,客户端和服务器相互交换修改数据,客户端首先发送修改.
慢同步 (Slow sync)
一种双方同步的形式,服务器需要比较客户端的每一项数据的每一个字段,这种同步方式客户端需要把全部数据发送给服务器.然后服务器进行比较.
客户端方同步(One way sync from client only)
客户端发送它的修改数据给服务器,服务器步发送修改给客户端
客户端更新同步
(Refresh sync
from client only)
 
客户端发送所有的数据给服务器,替换服务器中的数据
服务器端单方同步(One-way sync from server only)
客户端获得所有的服务器的修改数据,客户端不发送自己的修改数据给服务器
服务器端更新同步(Refresh sync
from server only)
服务器发送所有的数据给客户端,替换客户端的数据
服务器提醒同步Server Alerted Sync
服务器提醒客户端执行同步

 

SyncML表示协议
        SyncML表示协议没有指定数据同步协议、同步引擎。而是指定了一些同步框架、格式使之适应不同的数据同步模型。SyncML指定了很多同步操作的结果。
  • 定义了一种格式
  • 注册为 MIME(多用途网际邮件扩充协议)媒体格式
  • 定义了独立的同步传输协议
  • 可以适合于多种同步传输方式的需要
  • 与后台数据存储无关
  • 与同步对象类型分离
1 SyncML 命令
1.1 请求的命令
  • Add:允许发送者将数据元素加入到接收者可以识别的同步数据中去,该命令必须在Sync命令中指定。
  • Alert:允许发送者通知接收者,通知可以作为应用程序和应用程序之间消息或者是接收用户接口的显示消息扩展。
  • Atomic:允许发送者指明一个命令集合可在带有语义或者没有任何语义的执行。
  • Copy:允许发送者复制可被接受者接收的数据。
  • Delete:允许发送者删除可被接受者接收的数据。Delete命令可以包含一个请求魏实现数据存档,删除可以是回收删除或者实际删除。
  • Exec:发送者可以要求接收者调用一个命名的、可执行的程序。
  • Get:发送者可以从接收者那里申请数据元素,这个命令不能被Sync命令指定。
  • Map:发送者可以接收者更新标识符在两个数据集合之间。
  • Put:允许发送者发送数据给接收者,这个命令不能被Sync命令指定。
  • Release:允许发送者对接收者可以接受的数据元素进行替换,这个命令不能被Sync命令指定。
  • Search:允许发送者进行数据元素的查询。
  • Sequence:允许发送者指定一系列按顺序执行。
  • Sync:允许发送者指定包含的命令作为同步两个数据集合的部分。
1.2 应答的命令
  • Status:当处理前一个请求发生错误的时候,指明一个操作的完成状态。
  • Results:用来返回Get或者Search命令的数据结果。
2 SyncML数据格式
        SyncMl不但提供了通用的指令集合,还指明了一个小的通用的数据格式。数据格式提供了普通的为交换访问信息的媒体集合。例如通讯录、日历和消息。这三种数据格式是为了这个规范强制的,另外对于这些一般格式,SyncML允许鉴定其他的登记格式。SyncML利用MiME内容类型框架来鉴别数据格式。
3 使用XML
        SyncML消息是使用一种标记语言,而SynML表示协议其实是一个XML应用。SyncML DTD定义了用来表示SyncML消息的XML文档。SyncML大量的使用了XML的名空间,名空间必须在第一个元素类型声明。在SyncML DTD中的元素类型被定义在一个URI为“http://www.syncml.org/docs/syncml_represent_v10_20001207.dtd或者URN为syncml:syncml。SyncML DTD也可以被ISO 9070标准公用标示符-//SYNCML//DTD SyncML 1.0//EN识别。任何XML 的标准属性可以被用在SyncML文档中。
4使用 MIME
        互联网标准提供了一个工业界广泛接受的机制来鉴别不同的内容种类。SyncML消息用MiME媒体类型来鉴别,SyncML消息的媒体类型被登记在生产厂家列表中。目前有两个MIME内容可以用在SyncML消息中。applicattion/vnd.syncml+xml的MIME内容类型鉴别了SyncML消息基于文本的XML表达。applicattion/vnd.syncml+wbxml的MIME内容类型鉴别了SyncML消息基于文本的WBXML二进制表达。
5 SyncML标记语言描述
5.1 一般使用元素
        Archive、Chal、Cmd、CmdID、CmdRef、Cred、Final、Lang、LocURI、MsgID、MsgRef、NoResp、NoResult、RespURI、SessionID、SftDel、Source、SourceRef、Target、TargetRef、VerDTD、VerProto。
5.2 消息容器元素
        SyncML、SyncHdr、SyncBody。
5.3 数据描述元素
        Data、Item、Meta。
5.4 协议管理元素
        Status。
5.5 协议命令元素
        Add、Alert、Atomic、Copy、Delete、Exec、Get、Map、MapItem、Put、Replace、Result、Search、Sequence、Sync。
详细内容请查阅相关文档。

你可能感兴趣的:(嵌入式系统数据同步协议---SyncML协议)