關于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 上的投入得到補償。我們相信我們做這件事情的方式(以及率先開始這項工作的原因)是想讓許許多多的人接受它。我們知道要做到這一點,最好的方式就是免費發布質量優良、功能豐富、并能解決實際問題的技術。不管從許可證的詞匯中可以推論出什么,上面的話都是我們的指導原則?!?/p>
可能那些與社團律師有聯系的人會想要深入調查一下,但是這樣一條信息好像已經足夠鼓勵人們加緊開發了。
接收第一條 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