| 嵌入式系统数据同步协议 |
| 责任编辑:admin 更新日期:2005-8-6 |
数据同步协议、同步引擎。而是指定了一些同步框架、格式使之适应不同的数据同步模型。SyncML指定了很多同步操作的结果。
定义了一种格式
注册为 MIME(多用途网际邮件扩充协议)媒体格式
定义了独立的同步传输协议
可以适合于多种同步传输方式的需要
与后台数据存储无关
与同步对象类型分离
4.1 SyncML 命令
4.1.1 请求的命令
Add:允许发送者将数据元素加入到接收者可以识别的同步数据中去,该命令必须在Sync命令中指定。
Alert:允许发送者通知接收者,通知可以作为应用程序和应用程序之间消息或者是接收用户接口的显示消息扩展。
Atomic:允许发送者指明一个命令集合可在带有语义或者没有任何语义的执行。
Copy:允许发送者复制可被接受者接收的数据。
Delete:允许发送者删除可被接受者接收的数据。Delete命令可以包含一个请求魏实现数据存档,删除可以是回收删除或者实际删除。
Exec:发送者可以要求接收者调用一个命名的、可执行的程序。
Get:发送者可以从接收者那里申请数据元素,这个命令不能被Sync命令指定。
Map:发送者可以接收者更新标识符在两个数据集合之间。
Put:允许发送者发送数据给接收者,这个命令不能被Sync命令指定。
Release:允许发送者对接收者可以接受的数据元素进行替换,这个命令不能被Sync命令指定。
Search:允许发送者进行数据元素的查询。
Sequence:允许发送者指定一系列按顺序执行。
Sync:允许发送者指定包含的命令作为同步两个数据集合的部分。
4.1.2 应答的命令
Status:当处理前一个请求发生错误的时候,指明一个操作的完成状态。
Results:用来返回Get或者Search命令的数据结果。
4.2 SyncML数据格式
SyncMl不但提供了通用的指令集合,还指明了一个小的通用的数据格式。数据格式提供了普通的为交换访问信息的媒体集合。例如通讯录、日历和消息。这三种数据格式是为了这个规范强制的,另外对于这些一般格式,SyncML允许鉴定其他的登记格式。SyncML利用MiME内容类型框架来鉴别数据格式。
4.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.4使用 MIME
互联网标准提供了一个工业界广泛接受的机制来鉴别不同的内容种类。SyncML消息用MiME媒体类型来鉴别,SyncML消息的媒体类型被登记在生产厂家列表中。目前有两个MIME内容可以用在SyncML消息中。applicattion/vnd.syncml+xml的MIME内容类型鉴别了SyncML消息基于文本的XML表达。applicattion/vnd.syncml+wbxml的MIME内容类型鉴别了SyncML消息基于文本的WBXML二进制表达。
4.5 SyncML标记语言描述
4.5.1 一般使用元素
Archive、Chal、Cmd、CmdID、CmdRef、Cred、Final、Lang、LocURI、MsgID、MsgRef、NoResp、NoResult、RespURI、SessionID、SftDel、Source、SourceRef、Target、TargetRef、VerDTD、VerProto。
4.5.2 消息容器元素
SyncML、SyncHdr、SyncBody。
4.5.3 数据描述元素
Data、Item、Meta。
4.5.4 协议管理元素
Status。
4.5.5 协议命令元素
Add、Alert、Atomic、Copy、Delete、Exec、Get、Map、MapItem、Put、Replace、Result、Search、Sequence、Sync。
详细内容请查阅相关文档。
5 SyncML 参考工具包
工具包在XML语言和SyncML之间起到桥梁的作用
5.1使用 SyncML 工具包
一个缓冲区,存储SyncML编码可以选择如下中一种 ...
可以只使用一个工作空间
可以为一个应用程序分配一个工作空间
把 in 和 out 分成两个工作空间
5.2 使用SyncML工具包的工作空间 当同步开始,工作空间被创建: instanceOptions.encoding = SML_WBXML;
instanceOptions.workspaceName ="MyWorkspace";
instanceOptions.workspaceSize =20000;
callbacks.addCmdFunc = &handleAddCmdFunc;
...rc = smlInitInstance(callbacks,
instanceOptions,
&instanceID);
5.3 使用SyncML工具包解析器
体积小而且经过了优化处理(代替 DOM XML 解析器)支持以下格式:
XML
WBXML
回调函数将把解析后的信息送到应用程序,开始解析SyncML :
smlProcessData(instanceID, // pass the instance
SML_ALL_COMMANDS, // parse entire Msg
pUserData); // a void ptr
5.4 使用工具包 编码器
需要编码的信息要经过Toolkit.
pAddStruct->elementType = SML_PE_ADD;
pAddStruct->cmdID = ... ;
pAddStruct->itemList = ... ;
pAddStruct->cred = ... ;
smlAddCmd(instanceID, pAddStruct);
5.5 内容与通信
5.5.1 整合负载
解析、编码嵌入式数据格式
vCard
vCalendar
....
数据库接口
Lotus Domino
Outlook
DB2
...
5.5.2 发布同步信息
传输绑定
HTTP
OBEX (Infrared)
WSP
Floppy Disk
相关资源
下面的链接是SyncML标准的网站
SyncML站点
作者
作者是蓝点软件公司北京研发中心工程师,对该方面感兴趣的读者可以和作者联系。
邮件地址:kevin@bj.bluepoint.com.cn |
|