移動通信技術(shù)和計算機技術(shù)的進步促進了移動計算和通信設(shè)備的流行,人們開始使用越來越多而且是各種各樣的移動終端設(shè)備進行通信,處理和存儲各種數(shù)據(jù)和信息。眾多的終端設(shè)備使得不同設(shè)備間相同的數(shù)據(jù)和信息常常處于不一致的狀態(tài),這就需要進行移動數(shù)據(jù)同步。在當(dāng)前的移動數(shù)據(jù)同步領(lǐng)域,存在著眾多互不兼容的不同廠商各自的數(shù)據(jù)同步標(biāo)準(zhǔn),給最終用戶、設(shè)備制造商、應(yīng)用程序開發(fā)商和服務(wù)提供商帶來了很多的問題。針對這種混亂的狀況,制定一個統(tǒng)一的通用數(shù)范必須能夠在任何一種網(wǎng)絡(luò)傳輸協(xié)議之上和任意的數(shù)據(jù)設(shè)備之間同步任何一種協(xié)議所定義的數(shù)據(jù)和信息。
1 SyncML簡介
SyncML數(shù)據(jù)同步規(guī)范〔1-6〕是由數(shù)據(jù)同步論壇組織一SyncML發(fā)起組(SyncML Initiative)一制定的一個通用數(shù)據(jù)同步標(biāo)準(zhǔn)。由于SyncML數(shù)據(jù)同步規(guī)范是由國際上眾多的包括Ericsson、IBM、Lotus、Matsushita、Motorola、Nokia、Openwave和Starfish在內(nèi)的眾多公司,根據(jù)通用數(shù)據(jù)同步規(guī)范的要求共同制定完成的,所以該規(guī)范目前已經(jīng)成為一個被廣泛接受的工業(yè)界通用的同步
協(xié)議標(biāo)準(zhǔn)。國際電信聯(lián)盟已認可其為下一代移動通信標(biāo)準(zhǔn)的組成部分。
SyncML數(shù)據(jù)同步規(guī)范主要包括3個部分,即SyncML同步協(xié)議(SyncML Sync Protoc01)、SyncML表示協(xié)議(SyncML Representation Protoc01)和SyncML的傳輸方式綁定(目前僅包括SyncML HTTP Binding、SyncML OBEXBinding和SyncML WSP Binding)。SyncML同步協(xié)議主要定義了數(shù)據(jù)同步操作的會話流程、會話過程中的數(shù)據(jù)交互過程、同步雙方的握手過程及數(shù)據(jù)同步的類型等SYncML表示協(xié)議主要定義了同步所支持的數(shù)據(jù)類型、命令格式以及在各種網(wǎng)絡(luò)上傳輸?shù)腟YncML消息格式。SyncML消息可以在任何一種有線和無線的網(wǎng)絡(luò)上傳輸,在SYncML協(xié)議的傳輸方式綁定中定義了在HTT P(HyperText Transfer Protocol,超文本傳輸協(xié)議)、WSP(Wireless Session Protocol,無線會話協(xié)議)、OBEX(Object Exchange Protocol,對象交換協(xié)議)三種協(xié)議的網(wǎng)絡(luò)鏈接上傳輸SyncML消息的方式。這三種傳輸協(xié)議基本上涵蓋了所有的遠程和短程連接。
在SyncML同步協(xié)議中,定義了SyncML客戶端和SyncML服務(wù)器端之間消息的交互過程,包括同步雙方數(shù)據(jù)標(biāo)識符的定義及映射、數(shù)據(jù)庫修改數(shù)據(jù)時的安全措施等。定義的數(shù)據(jù)同步類型包括雙向同步(two-way wync)、慢同步(slow syne)、客戶端發(fā)起單向同步(one-way sync from client only)、客戶端發(fā)起刷新同步(refresh sync from client only)、服務(wù)器端發(fā)起單向同步(one-way sync from server only)、服務(wù)器端發(fā)起刷新同步(refresh syne from server only)、服務(wù)器端請求同步(server alerted sync)等。圖1說明了SyncML客戶端和服務(wù)器端同步時的消息交互情況,其中移動電話作為SyncML同步的客戶端, 一臺網(wǎng)絡(luò)服務(wù)器作為SyncML同步的服務(wù)器端。移動電話發(fā)送包含數(shù)據(jù)修改信息的SyncML消息給網(wǎng)絡(luò)服務(wù)器, 網(wǎng)絡(luò)服務(wù)器根據(jù)SyncML消息中的數(shù)據(jù)進行各種同步操作, 同步服務(wù)器中存儲的數(shù)據(jù), 然后把修改結(jié)果信息回應(yīng)給移動電話。
2 SRTK分析
為了方便SyncML數(shù)據(jù)同步規(guī)范的推廣和實現(xiàn), 同時也為了驗證sYncML數(shù)據(jù)同步規(guī)范的可實現(xiàn)性,SyncML發(fā)起組發(fā)布了一個開放源碼的SyncML參考實現(xiàn)—SyncML參考工具包。該工具包用C語言進行開發(fā),包含一個綜合的C庫,用于創(chuàng)建、發(fā)送、接收和解析SyncML消息。SRTK是一個比較成熟的產(chǎn)品。 可以在Windows平臺和Linux平臺上編譯。此外,它還為EPOC平臺和Palm平臺預(yù)留了接口。它支持XML和WBXML編碼,支持HTTP(用于Web上的同步)、WSP(在WAP上使用)和0BEX(在IrDA或藍牙上使用)傳輸。目前,SyncML參考工具包是在SourceForge(http://sourceforge.nct/)上托管的,項目名稱為SyncML C T00lkit,最新版本為4.3版(發(fā)布于2003年10月27日)。
2.1 SRTK總體結(jié)構(gòu)
SyncML參考工具包的外部結(jié)構(gòu)和內(nèi)部總體結(jié)構(gòu)如圖2所示。SyncML Reference Implementation(即SyncML參考工具包)通過一系列應(yīng)用編程接口為上層應(yīng)用程序提供數(shù)據(jù)同步服務(wù),上層應(yīng)用程序通過傳輸處理接口使用獨立的網(wǎng)絡(luò)傳輸模塊完成數(shù)據(jù)收發(fā)工作。應(yīng)用層除了使用下層提供的API外,還必須向下層的網(wǎng)絡(luò)傳輸模塊和SRTK提供一系列的回調(diào)函數(shù),以完成錯誤處理、同步命令處理及SyncML消息分片傳輸?shù)裙δ堋?/P>
由于SRTK主要實現(xiàn)的是SyncML消息的創(chuàng)建、解析及相關(guān)事務(wù)處理等功能,其本身并不具備網(wǎng)絡(luò)數(shù)據(jù)收發(fā)功能,故上層應(yīng)用程序需要利用獨立的網(wǎng)絡(luò)傳輸來實現(xiàn)數(shù)據(jù)同步功能。在SRTK的實際開發(fā)中,為了方便在SyncML參考工具包的基礎(chǔ)上進行相關(guān)同步應(yīng)用程序的開發(fā),SyncML發(fā)起組在編寫SRTK的同時,也實現(xiàn)了能夠進行HTTP、WSP和0BEX傳輸?shù)耐ㄐ殴ぞ甙?Communication Toolkit),并與SyncML工具包一起發(fā)布。
SyncML參考工具包的內(nèi)部實現(xiàn)結(jié)構(gòu)主要分為三層,分別為SyncML核心層、SyncML插件層和SyncML基本庫層。SyncML核心層主要實現(xiàn)供應(yīng)用層調(diào)用的SyncML參考實現(xiàn)接口。這一層獨立于具體的系統(tǒng)平臺, 主要包括三個部分:SyncML事務(wù)管理模塊, 主要負責(zé)同步事務(wù)管理, 包括多同步的協(xié)調(diào)、工作區(qū)緩存的訪IN控制和同步收發(fā)模式的切換等;SyncML命令生成模塊,主要負責(zé)生成SYncML同步消息, 僅用于同步發(fā)送模式;SyncML命令處理模塊,主要負責(zé)解析收到的SyncML同步消息并調(diào)用應(yīng)用層提供的回調(diào)函數(shù)完成相應(yīng)的同步操作,僅用于同步接收模式。中間的SyncML插件層主要實現(xiàn)一系列供SyncML核心層調(diào)用的下層功能,主要包括兩個部分, 即SyncML工作區(qū)管理模塊(負責(zé)用于存放svncML消息的工作區(qū)緩存的分配和回收工作)和SyncML編解碼模塊(負責(zé)XML或WBXML格式的SyncML消息的編碼或解析工作)。在SyncML參考工具包中,該層根據(jù)具體的運行平臺進行了一定程度的優(yōu)化。由于其被設(shè)計成插件層,所以它允許同時有多個SyncML工作區(qū)管理模塊或SyncML編解碼模塊存在,實際的同步實現(xiàn)可以根據(jù)不同情況調(diào)用不同的插件。最下一層是SyncML基本庫層,主要實現(xiàn)底層的諸如存儲管理、字符串處理等功能。這一層的主要作用是增強實現(xiàn)的可移植性。
2.2 SRTK同步模式
根據(jù)SyncML同步角色的差異,SyncML參考工具包分別工作于兩種不同的模式:當(dāng)SyncML同步軟件作為同步消息的發(fā)起者時,SyncML參考工具包工作于同步發(fā)送模式,此時SyncML命令處理模塊處于不工作狀態(tài);當(dāng)SyncML同步軟件作為同步消息的接收者時,SyncML參考工具包工作于同步接收模式,此時SyncML命令生成模塊處于不工作狀態(tài)。
2.2.1 同步發(fā)送模式
當(dāng)需要發(fā)起SyncML同步(客戶端)或回應(yīng)對方的SyncML同步(服務(wù)器端)時,SyncML事務(wù)管理模塊將使SRTK工作于同步發(fā)送模式。首先,應(yīng)用程序調(diào)用smllnitlnstane(),創(chuàng)建一個SyncMI同步事務(wù)(同時為其分配工作區(qū)緩存),必要的情況下可以調(diào)用SyncSetSeesion Options(),設(shè)置同步事務(wù)的參數(shù)。當(dāng)事務(wù)被成功創(chuàng)建之后,應(yīng)用程序就可以調(diào)用smlStarMessage(),開始創(chuàng)建同步消息文檔。當(dāng)應(yīng)用程序完成相關(guān)同步命令后,調(diào)用接口smlEndMessage(),結(jié)束同步消息文檔的創(chuàng)建工作。在這兩個接口調(diào)用之間,應(yīng)用程序可以根據(jù)不同的同步操作命令調(diào)用不同的接口,向同步消息文檔中添加同步命令信息。當(dāng)應(yīng)用程序完成同步消息文檔的創(chuàng)建工作以后, 應(yīng)用程序就可以調(diào)用smILockReadButffer()鎖定工作區(qū)緩存,同時獲取生成的同步消息文檔。之后,就可以調(diào)用網(wǎng)絡(luò)傳輸模塊的xptSendData()發(fā)送同步消息,發(fā)送完成后應(yīng)用程序必須調(diào)用smlUnlockReadBuffer(),將工作區(qū)緩存解鎖并釋放工作區(qū)緩存。最后,應(yīng)用程序調(diào)用smlTerminatelnstance(),結(jié)束同步事務(wù)。
2.2.2同步接收模式
當(dāng)需要接收對方的SyncML同步回應(yīng)(客戶端)或接收對方發(fā)起的SyncML同步(服務(wù)器端)時,SyncMI事務(wù)管理模塊將使SRTK工作于同步接收模式。首先,應(yīng)用程序調(diào)用smllnitlnstance()創(chuàng)建一個SyncMI同步事務(wù)(同時為其分配工作區(qū)緩存)。必要的情況下可以調(diào)用SyncSetSeesionOptions(),設(shè)置同步事務(wù)的參數(shù)。當(dāng)事務(wù)被成功創(chuàng)建之后,應(yīng)用程序就可以調(diào)用smlLockWrite Buffer()鎖定工作區(qū)緩存,同時利用接口xptReceiveData()接收同步消息文檔并保存到工作區(qū)緩存中。當(dāng)應(yīng)用程序完成同步消息文檔的接收后調(diào)用接口smlUnlockWrIte Buffer()將文檔交給SRTK進行處理。當(dāng)SRTK收到同步消息文檔后,將調(diào)用smlProcessData()進行處理。該接口調(diào)用下層模塊解析同步消息文檔,并根據(jù)解析結(jié)果調(diào)用相應(yīng)的命令處理回調(diào)函數(shù)完成相應(yīng)的同步操作。最后,應(yīng)用程序調(diào)用smlTerminatelnstance()結(jié)束同步事務(wù)。
3 SyncML CIient實現(xiàn)
鑒于大多數(shù)移動終端設(shè)備處理能力和存儲能力有限與移動通信網(wǎng)絡(luò)窄帶寬、長延時、高成本和不可靠等特點,一般只能在移動終端設(shè)備上實現(xiàn)輕量級的SyncML Client軟件,而且由于移動終端市場的激烈競爭,軟件開發(fā)的成本和上市時間等因素已成為相當(dāng)敏感的指標(biāo)。SyncML參考工具包由于其權(quán)威性、精簡性、良好的可移植性、開放源碼及可以免費使用等特點,成為目前移動終端設(shè)備上SyncML Client實現(xiàn)的首選。
3.1 SyncMt CIilent設(shè)計
SyncML參考工具包作為開放源碼的官方實現(xiàn),為進一步開發(fā)SyncML同步軟件提供了良好的起點,但僅僅SyncML參考工具包顯然是遠遠不夠的。本文在SyncML參考工具包的基礎(chǔ)上,研究和實現(xiàn)了工作于移動終端上的SyncMI Client軟件。
鑒于移動終端平臺的多樣性,本軟件可能會被作為獨立的模塊移植到不同的硬件平臺和軟件平臺上,因此本軟件在設(shè)計上盡可能地考慮軟件的移植性。為達到這一目的,本軟件系統(tǒng)采用了分層的設(shè)計思想,一方面盡可能地將SyncML數(shù)據(jù)同步的主要實現(xiàn)邏輯封裝起來,實現(xiàn)其平臺的無關(guān)性,另一方面,分別將對上和對下的與特定軟硬件環(huán)境相關(guān)的部分獨立出來構(gòu)成SyncML同步用戶接口層和平臺適配層。這樣,在需要進行軟件移植時,開發(fā)人員只需根據(jù)特定的軟硬件環(huán)境實現(xiàn)相應(yīng)的SyncML同步用戶接口層和平臺適配層,從而在最大程度上保證了移植的方便性和快捷性。除此之外,考慮到移動終端及移動通信網(wǎng)絡(luò)的實際狀況,在設(shè)計中也充分考慮了嵌入式軟件開發(fā)的要求,力爭使系統(tǒng)具有低存儲需求、低時間開銷、高可靠性、高靈活1生、高互操作性和完備的功能實現(xiàn)等特點。
圖3為移動終端SyncML Cllent軟件的結(jié)構(gòu)設(shè)計。SyncML同步用戶接口是軟件的人機交互界面,它向用戶提供了啟動、中止、配置數(shù)據(jù)同步的接口,同時用戶也能通過該接口實時獲取同步的狀態(tài)信息和結(jié)果信息。SyncML同步管理器是整個同步軟件的核心。它根據(jù)上層的相關(guān)配置信息和命令信息,分析日志管理模塊記錄的同步對象信息,讀取數(shù)據(jù)庫中相關(guān)同步對象數(shù)據(jù)并調(diào)用SyncML參考工具包生成同步消息,最后調(diào)用通信會話管理模塊的API發(fā)送同步消息。除此之外,它還接收通信會話管理模塊收到的同步消息,調(diào)用SyncML參考工具包進行解析,然后根據(jù)解析結(jié)果調(diào)用數(shù)據(jù)庫接口修改同步對象信息,同時同步修改日志信息,最后向上層的SyncML同步用戶接口匯報同步的結(jié)果信息。通信會話管理模塊負責(zé)同步軟件和SyncML服務(wù)器之間的協(xié)議交互和消息收發(fā),同時管理本地的會話信息和事務(wù)切換工作,相當(dāng)于SyncML發(fā)起組隨SyncML參考工具包一起發(fā)布的通信工具包。SyncML參考工具包負責(zé)同步消息的生成和解析工作。日志管理模塊負責(zé)記錄同步對象的修改信息,為實現(xiàn)與SyncML服務(wù)器的快速同步提供依據(jù)。數(shù)據(jù)庫接口實現(xiàn)同步對象的存取和修改等操作。平臺適配層為上述模塊提供必要的系統(tǒng)軟硬件平臺信息。
3.2 SyncML CIient實現(xiàn)
按照上面的設(shè)計方案,我們基于通用的智能手機軟硬件平臺實現(xiàn)了SyneML Client軟件。在實際的智能手機軟硬件平臺選擇上,基于成本和實際系統(tǒng)需求的考慮,選用了以Epson Slc33209為核心的硬件平臺和以Epson ROS33操作系統(tǒng)為核心的軟件平臺。開發(fā)工具選用了Microsoft Visual C++6和Epson系列編譯、鏈接、下載和調(diào)試工具。在下層通信協(xié)議的選擇上,我們實現(xiàn)了HTTP和WSP傳輸協(xié)議。
在實際的SyncMI Client實現(xiàn)中,本軟件主要是用于個人信息管(Personal Information Management,PIM)軟件的信息同步。具體地說就是同步移動終端和遠端服務(wù)器上的通訊錄和日程安排信息。其中通訊錄信息的編碼格式遵循vCard2.1和vCard 3.O標(biāo)準(zhǔn),日程安排信息的編碼格式遵循vCanlendar 1.O和iCanlendar 2.0標(biāo)準(zhǔn)。
為了保證最大程度上的互操作性,使得SyncML Cli_ent軟件能夠與任何符合SyncML數(shù)據(jù)同步規(guī)范的服務(wù)器進行數(shù)據(jù)同步操作,我們嚴(yán)格按照SyncML數(shù)據(jù)同步規(guī)范1.1.1版本的一致性要求進行軟件的開發(fā)工作。開發(fā)出的SyncML Client軟件功能包括:支持雙向同步、慢同步和服務(wù)器端請求同步三種同步類型;支持SyncML表示協(xié)議中所要求的所有同步客戶端元素類型;支持XML和WBXML兩種格式的同步信息編解碼功能;支持兩種安全認證方式,即基本認證方式和MD5摘要認證方式;支持將大的同步數(shù)據(jù)包拆分成多個網(wǎng)絡(luò)消息發(fā)送的機制和Large Objects模式;實現(xiàn)數(shù)據(jù)庫級的同步錨(Strnc Anchors);支持終端同時和多個服務(wù)器同步,本地保留多份同步日志信息(最多可同時保存5份同步日志信息)支持用于電子名片交換的vCard 2.1規(guī)范和vCard3.0規(guī)范;支持用于日歷及行程信息交換的vCalendar l.0規(guī)范和iCalendar 2.0規(guī)范;支持HTTP和WSP傳輸協(xié)議.
軟件開發(fā)過程的一個主要難點是軟件的后期測試平臺的構(gòu)建。當(dāng)前國內(nèi)開通的SyncML服務(wù)器很少,相關(guān)運營商的SyncML服務(wù)資料十分匱乏,給軟件的測試帶來了相當(dāng)?shù)睦щy。在實際測試中,我們通過構(gòu)建自己的SyncML服務(wù)器和測試環(huán)境克服了這一方面的困難。我們運用Nexthaus SyncJe(tm)Personal Servel,Outlook Edi-tion作為遠端的SyncML同步服務(wù)器,同時通過WildPackets EtherPeek NX for Windows分析相應(yīng)的同步消息,從而能夠在實際的移動網(wǎng)絡(luò)中測試SyncML Cli_ent軟件。
結(jié)語
隨著移動計算的日益普及,人們對于移動數(shù)據(jù)同步的需求正在不斷地增強,在一些領(lǐng)先的移動終端制造商的產(chǎn)品中已經(jīng)出現(xiàn)SyncMI的蹤影。SyncML參考工具包作為SyncML發(fā)起組提供的官方參考實現(xiàn),其很大程度上加快了SyncML同步軟件的開發(fā)和普及。雖然在一定程度上由于其擁有大量API且不友好的開發(fā)文檔,入門比較困難,但對于長期的SyncMl同步軟件開發(fā)而言,SyncML參考工具包已成為一個相當(dāng)好的選擇。