关于SyncML 一些文章和资源(zt)
SyncML 是基于 XML 的协议,用于同步数据,它正在的大量移动设备中发挥作用
转贴三篇来自IBM forum的文章........
1.XML 观察: 准备好数据,去旅行
2.XML 观察: WBXML 与 SyncML 服务器的基本需求
3.XML 观察: SyncML 工具箱
SyncML 使您的数据动起来
级别: 中级
Edd Dumbill
编辑兼发行人, xmlhack.com
2003 年 10 月
Column iconEdd Dumbill 作为一名 XML 开发人员,一直在寻求使他的数据随时随地都可以使用的方式。这一次,他带我们进入 SyncML 的研究与部署之旅。
于是 XML 到来了,与之相伴的还有对开放标准的价值的认同,数据开始从单一应用程序的禁锢中解放出来。当今的软件开发人员明白,数据是要在人和组织之间来回移动的。即将发布的 Microsot Office 11 也支持 XML,这就好比一个人在写遗嘱的时候才终于认识到,已经不能再将数据绑定在某个单一的应用程序上了。
因此,数据在应用程序之间的移动已经开始变得顺畅。除了这个好消息之外,我还很兴奋地看到,数据在设备之间的传输也正在变得更加容易。对于某些特定的常用数据项,如日历与通讯簿等,在标准方面已经达成一致的协议,但是还缺乏方便的方式来传送这些数据。而这些正是 SyncML 的用武之地。 SyncML 是基于 XML 的协议,用于同步数据,现在,它正在最近盛行的移动设备的海洋中大行其道。
即便是有了当前的同步技术,也很难保持我的 Palm Pilot、桌面 PC以及移动电话之间的联系和时间表的同步。事实上这件事情的难度相当大,我屡遭挫折,已经放弃尝试。每次都要记着把我的 PDA 和蜂窝电话一起带上,却只是为了用一下通讯簿,我已经受够了这些事情。而 SyncML 看起来似乎是解决此类问题的大好机会,由于它能够在无线应用协议(Wireless Application Protocol,WAP)上使用,我无论在哪里都可以和远程的服务器保持同步了。
但是还不能高兴的太早,事实上好像还没有什么面向用户的 SyncML 产品,而且支持它的也只有少量的开放源代码项目。因此我打算研究一下,看看如果要用 SyncML 将我的蜂窝电话和个人信息管理软件集成起来,都会涉及到哪些东西,然后我会发布这些代码。在本专栏的下几篇文章中,我将按照这个思路,特别着眼于 XML 技术可以应用的场合。
初探 SyncML
“SyncML”这个名字在某种程度上会产生误解。它是真正的基于 XML 的标记语言,但是却不止是一种数据格式。这种协议通过定义并允许交换数据,以及确定如何解释这些数据,从而提供了代理之间相互同步数据的结构。
在 Chandandeep Pabla 的“SyncML intensive”一文中(请参阅 参考资料),他介绍了一些 SyncML 的基本概念。我将会在逐步深入的过程中,随着这些概念的出现来介绍它们,不过我还是推荐您阅读一下 Chandandeep 的文章,以便能够熟悉 SyncML 的主要概念。
您可以从 SyncML 网站的“Technology”部分中找到 SyncML 1.1 规范,其中收录有大量的 PDF 和 DTD(请参阅 参考资料)。“SyncML Sync Protocol”(PDF 格式)这篇文档是了解 SyncML 功能的最好起点。其中需要您熟悉的有下面三种 XML 语言:
* SyncML:定义同步过程中涉及到的信息交换。
* SyncML Meta Information(SyncML 元信息,MetInf):定义 SyncML 中使用到的多种元数据项,如日期、ID、以及大小。
* SyncML Device Information(SyncML 设备信息,DevInf):用来描述被同步的设备(比如支持何种内容类型、有多少可用内存,等等)。
SyncML 规范也定义了第四种技术,用来进行设备管理和保证对设备进行远程管理操作时的性能。对这个协议的研究已经超出了这一系列文章的范畴。如果您对这个协议感兴趣,可以阅读 SyncML网站上“SyncML Device Mangement Protocol”(SyncML 设备管理协议)这篇文章。
SyncML 与 SOAP 1.2 一样,在协议中仅仅定义了数据的交换。它并没有将自己绑定在某种特定传输方式上。事实上,对多种传输方式的绑定是在 HTTP、Wireless Session Protocol(无线会话协议,是一种加速的 HTTP)以及Object Exchange(OBEX,对象交换协议)协议中定义的。Palm Pilot PDA 这样的设备通过 OBEX,以“beaming”(播放)方式发送与接收数据,非常类似于 HTTP 的二进制版本。
专利现状
现在很多标准都吹捧说自己是“开放的”,但是这并不总意味着它们是不受专利保护的技术。所以在实现之前最好先看看制定标准的人是谁,以及使用它的条件是什么。
开发 SyncML 的主要是对移动通信感兴趣的公司组成的社团。尽管规范的开发受到社团成员的限制,但是这项规范本身是可以公开使用的。规范中有一段样板戏一样的语言,声称保留规范的制订者征用规范实现的权利,不过根据 SyncML 的主席 Douglas Heintzman 的声明来看,他们并不会真的做出这种要求:
“我们想让我们在 SyncML 上的投入得到补偿。我们相信我们做这件事情的方式(以及率先开始这项工作的原因)是想让许许多多的人接受它。我们知道要做到这一点,最好的方式就是免费发布质量优良、功能丰富、并能解决实际问题的技术。不管从许可证的词汇中可以推论出什么,上面的话都是我们的指导原则。”
可能那些与社团律师有联系的人会想要深入调查一下,但是这样一条信息好像已经足够鼓励人们加紧开发了。
接收第一条 SyncML 消息
现在舞台已经搭好,是开始了解 SyncML 本性的时候了。通常阅读规范总是会有启发,但是也有时候先把玩一番,再问一些问题,会更有益处。我先设置了一台 Web 服务器,用我的移动电话(Ericsson R520m)访问这台服务器,然后看看接收到了什么。服务器日志显示有一个 HTTP post 请求。我编写了一段简单的 CGI 脚本把这个 post 请求的内容导出来,如 图 1 所示。
图 1. 输出 SyncML 消息
Output
您也许第一眼就会注意到,这并不是 XML。因为移动设备的内存和处理能力都有限,制造商们发明了一种类似 XML 的二进制元语言,称为 Wireless Binary XML(WBXML,无线二进制 XML)。WBXML 的基本原理在于利用 DTD 的先验知识,您可以将标签缩小到一个字节。付出的代价您也看到了,就是丧失了一些易读性。
很多 XML 开发人员从来没有见过 WBXML 规范,这让我觉得很惊讶。开发论坛上也经常遇到有人问有关 XML 二进制编码的问题。WBXML 最普遍的用法是作为 WML 页面的编码,并传送到移动电话的 WAP 浏览器上。
实际上 SyncML 规范同时涉及 XML 和 WBXML 格式的协议编码。SyncML 本意是在任何设备上都可以使用,但是如果要支持移动电话类型的设备,SyncML 服务器除了 XML 之外,还必须能够发送和接收 WBXML。,我已经在本文附带的 ZIP 文档中加入了 图 1的 WBXML 文件,以及用 XML 翻译后的文件(请参阅 参考资料)。XML 是用我编写的将 SyncML、WBXML 转换成 XML 的代码产生的,详细情况请参看本专栏的下一篇文章。
XML 翻译的指导意义更强,其中包含下面的元素:
* R520m 移动电话的设备描述
* 通知自上次同步之后日历的状态
* 通知自上次同步之后电话簿的状态
展望
本次研究的目标是创建基本的 SyncML 服务器组件,它即可以部署在 Web 服务器上,也可以部署在 OBEX 服务器上(比如,在具有兰牙功能的计算机上)。我们已经学到,除了实现 SyncML 语言的语义之外,我们还需要能处理 WBXML 和 XML。 参考资料中介绍了这一领域内的一些开放源代码项目。SyncML 在开放源代码世界中只是刚刚开始引起注意而已,当然值得您亲自开发一下。当然也还有很多其他的包值得您研究。
下一篇专栏文章将着眼于 WBXML,并研究它与普通 XML 的相似性与不同之处。同时还会介绍 WBXML 对于 SyncML 服务器的基本需求。
参考资料
* 您可以参阅本文在 developerWorks 全球站点上的 英文原文.
* 请在 讨论论坛上参与本文的讨论。(您也可以单击文章顶部或底部的 讨论来访问论坛。)
* 请下载这个 ZIP 文件,其中包括 图 1中讨论的 WBXML 文件与转换后的 XML 文件。
* 您可以在 SyncML 网站上找到 SyncML 的规范。
* 您可以在 Sync Congress中遇到其他与 SyncML 相关的开发人员。
* 请您阅读 Chandandeep Pabla 的文章, “ SyncML intensive”,这篇文章是有关 SyncML 功能的优秀教程。
* 请您阅读 Aashish Patil 的文章 “ Sync traps”,其中探讨了同步如何在普适计算中扮演至关重要的角色。
* 请参考 Open Mobile Alliance维护的 WAP 规范,其中包括 WBXML。
* 请参考开放源代码项目 sync4j,他们正在开发基于 J2EE 的 SyncML 服务器。
* 请参考基于 C 的 WBXML 解析器 WBXML Library,最近它已经作为开放源代码项目发布了。
* 请阅读 Edd Dumbill 以往的 XML 观察专栏。
* 在 developerWorks XML 专区中可以找到更多的 XML 资料。
* IBM WebSphere Studio Application Developer 是一种易于使用的集成开发环境,您可以用它来创建、测试和部署 J2EE 应用程序,还可以从 DTD 和 模式中生成 XML.
* 请您关注如何才能成为 IBM 认证的 XML 及其相关技术开发人员。
由mochigan 发表于 February 23, 2006 10:06 AM