XML - 資料交換管理/SyncML
XML - 資料交換管理
|
相關主題
|
參與進來
|
| 上一章 | 下一章 |
| ← 資料庫和 XML | SVG → |
完成本章後,您將能夠
- 理解 SyncML 基礎知識和通用語法。
- 瞭解 SyncML 如何以及為何實現。
- 快速查詢和使用 SyncML 技術規範。
諸如 PDA、尋呼機、手機和筆記型電腦等移動裝置本質上並非始終連線到網路。然而,這些裝置包含需要從網路獲取資訊才能發揮作用的應用程式。雖然大多數 PDA 和手機都包含日曆、任務列表和通訊錄等應用程式來儲存有用資訊,但當這些資訊是靜態的,僅在裝置本身上可用時,其效用就大打折扣。例如,當在一份副本上進行更改時,靜態資訊的副本將始終存在差異。同步使裝置能夠連線到網路以更新裝置上的資訊或網路上的資訊,從而使兩組資訊保持一致並更新。
鑑於專有移動裝置和協議的激增,以及消費者對無處不在的移動資訊訪問的需求日益增長,領先的技術公司看到了建立一種標準的通用語言來描述裝置和應用程式之間同步操作的必要性。他們組成了一個聯盟來贊助 SyncML 計劃以建立這種語言。
目前,SyncML 聯盟已被開放移動聯盟(一個擁有 300 多家公司的更大的組織,該組織贊助了許多協作技術專案和協議)採用並納入其中。
SyncML 或同步標記語言是一種基於 XML 的行業標準協議,用於在各種網路、平臺和裝置之間同步移動資料。SyncML 最初是 2000 年中期由愛立信、IBM、Palm Inc.、Lotus、松下電器(Panasonic)、摩托羅拉、諾基亞、Openwave、Starfish Software、Psion 和 Symbian 等主要科技公司發起的一項倡議。他們的倡議目標是從移動裝置使用的眾多專有同步協議中建立一種通用語言,併為未來的裝置提供一整套同步功能。該聯盟於 2000 年 12 月釋出了 1.0 版。然後,他們在後續版本中實現了新功能並解決了問題,並於 2002 年 2 月完成了 1.1 版的協議。
SyncML 協議的設計目標如下:
- 作為一種通用語言,任何裝置都應該能夠與任何 SyncML 服務(網路資料儲存庫)同步。
- 任何使用 SyncML 的服務都應該能夠與任何支援 SyncML 的裝置同步。
- 該協議必須解決移動裝置的限制,尤其是在記憶體儲存方面。
- 它必須支援各種傳輸協議,例如 HTTP、SMTP、藍牙等。
- 它必須向所有裝置提供常見的同步命令。
- 它建立在現有的 Web 技術之上,特別是 XML。
- 支援非同步通訊和錯誤處理,因為網際網路存在延遲。
SyncML 由包含在 DTD 定義中的客戶端和伺服器命令組成……
讓我們從定義詞彙表開始:
- 客戶端 - 移動裝置、其應用程式和本地資料庫。
- 伺服器 - 與系統資料庫或應用程式通訊的遠端系統。
- 修改 - 資料庫中欄位中的資料發生更改。
- 同步 - 客戶端和伺服器使用命令交換 SyncML 訊息。
- 資料包 - 符合 SyncML DTD 的 XML 標記,描述 SyncML 客戶端或伺服器要採取的請求或操作。資料包是要執行的一系列操作的集合。
- 訊息 - SyncML 標記的最小單位。大型資料包被分解成單獨的訊息。
- 對映 - 使用中間識別符號將兩條資訊關聯起來。例如:假設“綠色”是“5”,而“5”很好。什麼是好的?如果你說是“綠色”,那麼你答對了。你剛剛做了對映!
縮寫
| IMEI | 國際移動裝置識別碼 |
| GUID | 全域性唯一識別符號 |
| LUID | 本地唯一識別符號 |
SyncML 訊息是客戶端或伺服器發出的執行某些操作的請求。該操作可能是同步資料、對資料執行一些檢查、更新狀態或處理與這些操作相關的任何錯誤。訊息被捆綁在一起形成資料包,就像一個待辦事項列表。訊息是請求的清單,如果提供了足夠的資訊來識別該訊息屬於哪個資料包,則可以按任意順序將它們拼湊在一起。
SyncML 的設計考慮了錯誤和訊息丟失的情況。如果一條訊息丟失,SyncML 客戶端或伺服器將知道存在問題,因為無法完成對映。然後,它將發出重新發送資訊的請求。收到資料後,可以繼續對資訊進行更新。
與 SOAP 類似,SyncML 訊息也分為兩部分:Sync Header <SyncHdr> 和 Sync Body <SyncBody>。標題包含有關請求的元資訊,例如目標資料庫 <Target> 和源資料庫 <Source> URI、身份驗證資訊 <Cred>、會話 ID <SessionID>、訊息 ID <MsgID> 和 SyncML 版本宣告 <VerDTD>。主體包含實際的請求、警報和資料。
定址是透過 <syntaxhighlight> 和 <LocURI> 標籤完成的。伺服器將具有類似 http://www.chris.syncml.org/sync 的熟悉 URI,而客戶端移動裝置將具有類似 30400495959596904 的 IMEI 識別號。
SyncML 基於這樣的理念:客戶端和伺服器可以有自己對映資料庫中資訊的方式。因此,客戶端和伺服器必須各自具有一組唯一的識別符號。
- 本地唯一識別符號 (LUID) 是客戶端分配給本地資料庫中資料物件(如欄位或行)的數字。它們是由 SyncML 客戶端分配給這些物件的不可重用的數字。
- 全域性唯一識別符號 (GUID) 是分配給資料物件以在遠端資料庫中使用的數字。此識別符號由伺服器分配。
LUID 和 GUID 編號只有在兩個通訊方之間使用的表格中才需要唯一。換句話說,這些數字是臨時的,用於將資料對映到表格,並且僅在客戶端和伺服器之間的事務持續期間存在。
伺服器將建立一個對映表以將 LUID 和 GUID 關聯起來。
客戶端資料
LUID ---- 5 |
Data ---- Green |
伺服器端資料
GUID ---- 5050505 |
Data ---- Green |
伺服器對映
GUID ---- 5050505 |
LUID ---- 5 |
伺服器和客戶端透過“變更日誌”跟蹤在同步期間對其資料庫所做的更改。SyncML 未定義變更日誌,而是要求客戶端和伺服器透過訊息協商更改和更正。使用變更日誌,客戶端和伺服器知道哪些欄位需要更新。將在使用 SyncML 的應用程式中實現變更跟蹤的方式未定義。
在同步期間,客戶端和伺服器需要知道要更新哪些欄位。如果客戶端/伺服器應用程式在更新/修改欄位之前檢查這些欄位,那麼客戶端/伺服器如何跟蹤資料庫中當前欄位的位置?答案是“使用同步錨點”。
錨點有兩種:Last 和 Next。“Last”錨點描述上次同步事件期間發生的更新。“Next”錨點描述當前和未來的同步請求。這些錨點從傳送裝置的角度描述事件。
錨點在客戶端和伺服器之間來回傳送,以跟蹤資料庫欄位發生的情況以及在同步操作的整個生命週期中發生的情況。
透過將同步錨點和變更日誌與請求的同步型別協調,伺服器應用程式可以確定和跟蹤(使用變更日誌)哪些資訊是最新的。例如,可以使用較舊的資訊覆蓋“較新”的資訊,即變更日誌中具有最新時間戳的資訊。這可以透過選擇客戶端告訴伺服器用客戶端資料覆蓋其資訊的同步來實現。這稱為“來自客戶端的重新整理同步”。同步型別在下面描述。
SyncML 1.1 語言中有七種型別的同步。以下部分描述了同步型別。
- 雙向同步 - 客戶端和伺服器交換有關修改資料的信。客戶端首先發送修改。
- 慢速同步 - 一種雙向同步,其中檢查資料庫中所有欄位的逐欄位基礎。此型別的同步用於第一次同步或同步失敗後。
- 僅客戶端單向同步 - 客戶端首先發送修改後的資料。伺服器接受並更新資料,而不傳送其修改。
- 來自客戶端的重新整理同步 - 客戶端將整個資料庫傳送到伺服器。伺服器不進行同步。相反,伺服器用客戶端的資料庫替換目標資料庫。
- 僅伺服器單向同步 - 伺服器首先發送修改後的資料。客戶端接受並更新資料,而不傳送其修改。
- 來自伺服器的重新整理同步 - 伺服器將其資料庫中的所有資訊傳送到客戶端,替換客戶端的資料庫。
- 伺服器提醒同步 - 伺服器遠端命令客戶端使用伺服器啟動上述同步型別之一。這樣,伺服器就可以遠端控制客戶端。
同步啟動是客戶端和伺服器在實際同步之前必須經歷的過程。第一步是客戶端和伺服器使用相同的語言,交換和揭示彼此的功能(由裝置定義,例如記憶體量,以及由 DTD 定義的協議)。第二步是識別要同步的資料庫。接下來,兩者必須確定同步型別。第三步也是最後一步是身份驗證。成功完成此步驟後,同步活動即可開始。
SyncML 伺服器可以向客戶端傳送包含<Chal>標籤的訊息,以表示對客戶端嘗試訪問的資訊進行身份驗證的挑戰。然後,客戶端必須響應,在<Cred>標籤中提供使用者名稱和密碼。
SyncML 使用 MD5 摘要訪問身份驗證。客戶端和伺服器在身份驗證過程中交換憑據,如果過程在某個點中斷,則返回錯誤程式碼。<Cred>標籤用於<SyncHdr>中,用於儲存用於身份驗證的憑據。
諾基亞是第一家制造支援 SyncML 的手機的公司。它同步了手機上的日曆資料庫。SyncML 可以同步待辦事項列表、日曆、地址簿、電話簿,幾乎任何組織者可以執行的操作。SyncML 能夠做更多的事情。在需要共享相同資料的兩個不同的遠端應用程式之間,使用 SyncML 將是合適的。
SyncML 示例(簡化)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<SyncML> <SyncHdr> <VerDTD>1.1</VerDTD> <VerProto>SyncML/1.1</VerProto> <SessionID>104050403</SessionID> <MsgID>5</MsgID> <Cred>...</Cred> </SyncHdr> <SyncBody> <Status>...</Status> <Sync> <Target>target database URI</Target> <Source>source database URI</Source> <Add>datafield and data</Add> <Replace>an existing data field with some data</Replace> </Sync> </SyncBody> </SyncML> |
請注意,第 {1} 行和第 {18} 行使用根標籤開始 SyncML 檔案。接下來,第 {2} 行和第 {8} 行定義 SyncHdr。此外,第 {3,4} 行定義版本資訊,第 {5} 行定義 sessionID 以區分客戶端和伺服器應用程式之間發生的唯一對話,第 {6} 行顯示 MsgID 以唯一標識此請求集(整個標記),以便由請求的應用程式執行。SyncHeader 中還有憑據,位於第 {7} 行。
SyncBody 從第 {9} 行開始。在此 SyncML 訊息的這一部分中,給出了裝置/應用程式狀態 {10}、目標/源 URI {12,13} 和請求的操作,例如第 {11,16} 行之間的同步本身、新增和替換 {14,15} 命令。
WAP 二進位制 XML (WBXML) 是一種 XML 格式,其中 XML 標籤被縮寫,以縮短髮送到移動裝置的標記,這些裝置通常具有頻寬和記憶體限制。XML 標籤被編碼成二進位制速記以節省空間。讓我們看一個例子,這樣會更有意義。
以下是描述 SyncML 訊息的 WBXML 二進位制程式碼。請注意,第一行有一個文件型別定義,這裡用十六進位制標記表示。你能看到以下字串發生了什麼?"//SYNCML//DTD SYNCML 1.1//EN"
緊跟此字串後面的是字元“6D 6L 71”。每個字元都代表一個 SyncML 標籤。
wbxml 縮寫
6D 6C 71 |
= "<SyncML>" = "<SyncHdr>" = "<VerDTD>" |
wbxml 縮寫(續)
C3 03 "1" "." "1" 01 |
= represents the beginning of opaque (xml) data = this represents the length of this opaque data = The characters "1" followed by "." and "1" = represents "</VerDTD>" |
告訴 SyncML 處理器這是不透明(xml)資料的開始,這表示此不透明資料的長度。字元“1”後跟“.”和“1”表示“</VerDTD>”
總而言之,此 WBXML 程式碼片段6D6L71C303"1.1"01表示
SyncML 標頭片段
1 2 3 |
<SyncML> <SyncHdr> <VerDTD>1.1</VerDTD> |
因此您可以看到使用 WBXML 速記將是表示 XML 的更緊湊的方法,從而為移動裝置節省頻寬。
有關更多資訊,請參閱 Ed Dumbill 關於使用 WBXML 的 syncML 的文章。
有關 SyncML 的最佳資訊來源是協議本身。訪問開放移動聯盟以獲取 SyncML 規範。
在開放移動聯盟下載OMA SyncML 規範和白皮書。或者檢視開放移動聯盟上的SyncML 文章。
雖然 SyncML 規範很有用,但您仍然需要在應用程式中實現該協議。有一些工具包和實現可供使用,您可以使用它們來快速入門。
開放移動聯盟(Open Mobile Alliance)已經發布了一個用C語言編寫的工具包來演示SyncML。您可以在這裡獲取它。如果您能閱讀德語,您可以在這裡獲取一個使用該工具包的示例應用程式。
有興趣為Java開發SyncML嗎?檢視開源專案Funambol。它提供了一個實現了SyncML資料同步協議的Java和C++ SDK,一個用於構建SyncML伺服器應用程式的基於Java的應用程式框架,以及一個獨立的SyncML伺服器。
移動裝置技術正在快速發展和變化。隨著美國電信公司實施第三代(3G)WCDMA技術(寬頻分碼多重進接)或無線寬頻,我們將開始看到強大的裝置出現在市場上。這些裝置將能夠提供全綵色、影片、流媒體多媒體和各種資料服務,例如透過WAP提供的多媒體資訊服務(MMS)。由於基礎設施變得越來越便宜,這些電信公司開始轉向成為服務提供商和媒體供應商,而不是通訊公用事業。Cingular無線、多媒體訊息和鈴聲服務是他們公司轉向成為媒體平臺的一個很好的例子。能夠生存下來的公司將是那些傾聽客戶需求並提供易於使用的服務的公司。
電信公司可以透過建立使用SyncML進行同步的自定義應用程式和服務來為其服務增加價值。
- 訪問開放移動聯盟網站,下載SyncML v. 1.1協議的pdf並檢視它。閱讀此參考是學習的有價值的練習。
- 回答以下問題
- 什麼是WBXML,為什麼使用它?
- 您如何預測SyncML在未來的應用?
- 命名一個問題情境,其中SyncML是最佳的“工具”。
答案:2a) WBXML是無線應用協議二進位制XML(Wap Binary XML),它是一種XML形式,其中XML標籤被縮寫以縮短髮送到移動裝置的標記,移動裝置通常具有頻寬和記憶體限制。2b) SyncML可能會被用作一種通用的標準同步機制,用於在系統之間同步資料集,而不僅僅用於移動裝置。2c) 一個名為TNT helpdesk的工單跟蹤系統是一個基於Web的開放工作請求管理系統。執行此係統的員工希望在其PDA上擁有來自該系統的即時資料,列出開放請求。目前,PDA資料庫透過連線到員工PC的對接同步站進行同步。員工必須將請求列表下載為CSV檔案,將其轉換為可用的PDA資料庫並將其上傳到PDA,這使得此過程變得繁瑣、容易出錯且始終過時。建議:建立一個自定義應用程式,使用藍牙/無線透過SyncML將即時更新推送到PDA。
| Dumbill, E.(2002年1月1日)。XML觀察:擁有資料,即可傳輸。IBM.com。於2004年4月6日從 http://www-106.ibm.com/developerworks/xml/library/x-synchml/index.html |
| Dumbill, E.(2003年3月1日)。XML觀察:WBXML和基本的SyncML伺服器需求。IBM.com。於2004年4月6日從 http://www-106.ibm.com/developerworks/xml/library/x-syncml2.html |
| [SyncML]的工作原理(n.a)。Nokia.com。於2004年4月6日從 http://www.nokia.com/nokia/0,8764,2559,00.html |
| 新的SyncML標準。Cellular Dot Co Dot Za網站。於2004年4月6日從 http://www.cellular.co.za/syncml.htm |
| 開放移動聯盟(2002年4月2日)。SyncML版本1.0、1.1規範、白皮書、勘誤表。於2004年4月6日從 http://www.openmobilealliance.org/tech/affiliates/syncml/syncmlindex.html |
| Pabla, C(2002年4月1日)。SyncML強化:SyncML協議和流程的初學者指南。IBM.com。於2004年4月6日從 http://www-106.ibm.com/developerworks/xml/library/wi-syncml2/ |
| SyncML Initiative, Ltd.(2000年12月7日)。SyncML規範協議版本1.0。開放移動聯盟。於2004年4月6日從 http://www.openmobilealliance.org/tech/affiliates/syncml/syncml_represent_v10_20001207.pdf |
| SyncML Initiative, Ltd.(2002年2月15日)。SyncML裝置資訊DTD版本1.1。。於2004年4月6日從 http://www.openmobilealliance.org/tech/affiliates/syncml/syncml_devinf_v11_20020215.pdf |
| Saarilahti, A, Group SyncML,等(2001年4月23日)。Tik-76.115 SyncML簡要介紹。。於2004年4月6日從 http://www.hut.fi/u/asaarila/syncml/syncml_intro.html |
| Stemberger, S.(2002年10月)。同步資料:SyncML簡介。IBM.com。於2004年4月6日從 http://www-106.ibm.com/developerworks/wireless/library/wi-syncml/ |
| Synchronica Software GmbH(n.d.)。SyncML for Microsoft Exchange。Synchronica Software網站。於2004年5月24日從 http://www.synchronica.com/products/syncml/corporate_syncml.html |
| Weblicon Technologies AG (n.d.)。SyncML for SunOne。Weblicon Technologies AG網站。於2004年4月6日從 http://www.weblicon.net/html/products_syncml.html |
| XML Cover Pages (n.a., 2003年4月29日)。SyncML計劃。XML Cover Pages Dot Org網站。於2004年4月6日從 http://xml.coverpages.org/syncML.html |