<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > SyncML Client實(shí)現研究

SyncML Client實(shí)現研究

作者: 時(shí)間:2006-06-20 來(lái)源:網(wǎng)絡(luò ) 收藏

移動(dòng)通信技術(shù)和計算機技術(shù)的進(jìn)步促進(jìn)了移動(dòng)計算和通信設備的流行,人們開(kāi)始使用越來(lái)越多而且是各種各樣的移動(dòng)終端設備進(jìn)行通信,處理和存儲各種數據和信息。眾多的終端設備使得不同設備間相同的數據和信息常常處于不一致的狀態(tài),這就需要進(jìn)行移動(dòng)數據同步。在當前的移動(dòng)數據同步領(lǐng)域,存在著(zhù)眾多互不兼容的不同廠(chǎng)商各自的數據同步標準,給最終用戶(hù)、設備制造商、應用程序開(kāi)發(fā)商和服務(wù)提供商帶來(lái)了很多的問(wèn)題。針對這種混亂的狀況,制定一個(gè)統一的通用數范必須能夠在任何一種網(wǎng)絡(luò )傳輸協(xié)議之上和任意的數據設備之間同步任何一種協(xié)議所定義的數據和信息。


1 簡(jiǎn)介
數據同步規范〔1-6〕是由數據同步論壇組織一發(fā)起組(SyncML Initiative)一制定的一個(gè)通用數據同步標準。由于SyncML數據同步規范是由國際上眾多的包括Ericsson、IBM、Lotus、Matsushita、Motorola、Nokia、Openwave和Starfish在內的眾多公司,根據通用數據同步規范的要求共同制定完成的,所以該規范目前已經(jīng)成為一個(gè)被廣泛接受的工業(yè)界通用的同步
協(xié)議標準。國際電信聯(lián)盟已認可其為下一代移動(dòng)通信標準的組成部分。
SyncML數據同步規范主要包括3個(gè)部分,即SyncML同步協(xié)議(SyncML Sync Protoc01)、SyncML表示協(xié)議(SyncML Representation Protoc01)和SyncML的傳輸方式綁定(目前僅包括SyncML HTTP Binding、SyncML OBEXBinding和SyncML WSP Binding)。SyncML同步協(xié)議主要定義了數據同步操作的會(huì )話(huà)流程、會(huì )話(huà)過(guò)程中的數據交互過(guò)程、同步雙方的握手過(guò)程及數據同步的類(lèi)型等SYncML表示協(xié)議主要定義了同步所支持的數據類(lèi)型、命令格式以及在各種網(wǎng)絡(luò )上傳輸的SYncML消息格式。SyncML消息可以在任何一種有線(xiàn)和無(wú)線(xiàn)的網(wǎng)絡(luò )上傳輸,在SYncML協(xié)議的傳輸方式綁定中定義了在HTT P(HyperText Transfer Protocol,超文本傳輸協(xié)議)、WSP(Wireless Session Protocol,無(wú)線(xiàn)會(huì )話(huà)協(xié)議)、OBEX(Object Exchange Protocol,對象交換協(xié)議)三種協(xié)議的網(wǎng)絡(luò )鏈接上傳輸SyncML消息的方式。這三種傳輸協(xié)議基本上涵蓋了所有的遠程和短程連接。

在SyncML同步協(xié)議中,定義了SyncML客戶(hù)端和SyncML服務(wù)器端之間消息的交互過(guò)程,包括同步雙方數據標識符的定義及映射、數據庫修改數據時(shí)的安全措施等。定義的數據同步類(lèi)型包括雙向同步(two-way wync)、慢同步(slow syne)、客戶(hù)端發(fā)起單向同步(one-way sync from client only)、客戶(hù)端發(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說(shuō)明了SyncML客戶(hù)端和服務(wù)器端同步時(shí)的消息交互情況,其中移動(dòng)電話(huà)作為SyncML同步的客戶(hù)端, 一臺網(wǎng)絡(luò )服務(wù)器作為SyncML同步的服務(wù)器端。移動(dòng)電話(huà)發(fā)送包含數據修改信息的SyncML消息給網(wǎng)絡(luò )服務(wù)器, 網(wǎng)絡(luò )服務(wù)器根據SyncML消息中的數據進(jìn)行各種同步操作, 同步服務(wù)器中存儲的數據, 然后把修改結果信息回應給移動(dòng)電話(huà)。


2 SRTK分析
為了方便SyncML數據同步規范的推廣和, 同時(shí)也為了驗證sYncML數據同步規范的可性,SyncML發(fā)起組發(fā)布了一個(gè)開(kāi)放源碼的SyncML參考―SyncML參考工具包。該工具包用C語(yǔ)言進(jìn)行開(kāi)發(fā),包含一個(gè)綜合的C庫,用于創(chuàng )建、發(fā)送、接收和解析SyncML消息。SRTK是一個(gè)比較成熟的產(chǎn)品。 可以在Windows平臺和Linux平臺上編譯。此外,它還為EPOC平臺和Palm平臺預留了接口。它支持XML和WBXML編碼,支持HTTP(用于Web上的同步)、WSP(在WAP上使用)和0BEX(在IrDA或藍牙上使用)傳輸。目前,SyncML參考工具包是在SourceForge(http://sourceforge.nct/)上托管的,項目名稱(chēng)為SyncML C T00lkit,最新版本為4.3版(發(fā)布于2003年10月27日)。
2.1 SRTK總體結構
SyncML參考工具包的外部結構和內部總體結構如圖2所示。SyncML Reference Implementation(即SyncML參考工具包)通過(guò)一系列應用編程接口為上層應用程序提供數據同步服務(wù),上層應用程序通過(guò)傳輸處理接口使用獨立的網(wǎng)絡(luò )傳輸模塊完成數據收發(fā)工作。應用層除了使用下層提供的API外,還必須向下層的網(wǎng)絡(luò )傳輸模塊和SRTK提供一系列的回調函數,以完成錯誤處理、同步命令處理及SyncML消息分片傳輸等功能。

由于SRTK主要實(shí)現的是SyncML消息的創(chuàng )建、解析及相關(guān)事務(wù)處理等功能,其本身并不具備網(wǎng)絡(luò )數據收發(fā)功能,故上層應用程序需要利用獨立的網(wǎng)絡(luò )傳輸來(lái)實(shí)現數據同步功能。在SRTK的實(shí)際開(kāi)發(fā)中,為了方便在SyncML參考工具包的基礎上進(jìn)行相關(guān)同步應用程序的開(kāi)發(fā),SyncML發(fā)起組在編寫(xiě)SRTK的同時(shí),也實(shí)現了能夠進(jìn)行HTTP、WSP和0BEX傳輸的通信工具包(Communication Toolkit),并與SyncML工具包一起發(fā)布。
SyncML參考工具包的內部實(shí)現結構主要分為三層,分別為SyncML核心層、SyncML插件層和SyncML基本庫層。SyncML核心層主要實(shí)現供應用層調用的SyncML參考實(shí)現接口。這一層獨立于具體的系統平臺, 主要包括三個(gè)部分:SyncML事務(wù)管理模塊, 主要負責同步事務(wù)管理, 包括多同步的協(xié)調、工作區緩存的訪(fǎng)IN控制和同步收發(fā)模式的切換等;SyncML命令生成模塊,主要負責生成SYncML同步消息, 僅用于同步發(fā)送模式;SyncML命令處理模塊,主要負責解析收到的SyncML同步消息并調用應用層提供的回調函數完成相應的同步操作,僅用于同步接收模式。中間的SyncML插件層主要實(shí)現一系列供SyncML核心層調用的下層功能,主要包括兩個(gè)部分, 即SyncML工作區管理模塊(負責用于存放svncML消息的工作區緩存的分配和回收工作)和SyncML編解碼模塊(負責XML或WBXML格式的SyncML消息的編碼或解析工作)。在SyncML參考工具包中,該層根據具體的運行平臺進(jìn)行了一定程度的優(yōu)化。由于其被設計成插件層,所以它允許同時(shí)有多個(gè)SyncML工作區管理模塊或SyncML編解碼模塊存在,實(shí)際的同步實(shí)現可以根據不同情況調用不同的插件。最下一層是SyncML基本庫層,主要實(shí)現底層的諸如存儲管理、字符串處理等功能。這一層的主要作用是增強實(shí)現的可移植性。
2.2 SRTK同步模式
根據SyncML同步角色的差異,SyncML參考工具包分別工作于兩種不同的模式:當SyncML同步軟件作為同步消息的發(fā)起者時(shí),SyncML參考工具包工作于同步發(fā)送模式,此時(shí)SyncML命令處理模塊處于不工作狀態(tài);當SyncML同步軟件作為同步消息的接收者時(shí),SyncML參考工具包工作于同步接收模式,此時(shí)SyncML命令生成模塊處于不工作狀態(tài)。
2.2.1 同步發(fā)送模式
當需要發(fā)起SyncML同步(客戶(hù)端)或回應對方的SyncML同步(服務(wù)器端)時(shí),SyncML事務(wù)管理模塊將使SRTK工作于同步發(fā)送模式。首先,應用程序調用smllnitlnstane(),創(chuàng )建一個(gè)SyncMI同步事務(wù)(同時(shí)為其分配工作區緩存),必要的情況下可以調用SyncSetSeesion Options(),設置同步事務(wù)的參數。當事務(wù)被成功創(chuàng )建之后,應用程序就可以調用smlStarMessage(),開(kāi)始創(chuàng )建同步消息文檔。當應用程序完成相關(guān)同步命令后,調用接口smlEndMessage(),結束同步消息文檔的創(chuàng )建工作。在這兩個(gè)接口調用之間,應用程序可以根據不同的同步操作命令調用不同的接口,向同步消息文檔中添加同步命令信息。當應用程序完成同步消息文檔的創(chuàng )建工作以后, 應用程序就可以調用smILockReadButffer()鎖定工作區緩存,同時(shí)獲取生成的同步消息文檔。之后,就可以調用網(wǎng)絡(luò )傳輸模塊的xptSendData()發(fā)送同步消息,發(fā)送完成后應用程序必須調用smlUnlockReadBuffer(),將工作區緩存解鎖并釋放工作區緩存。最后,應用程序調用smlTerminatelnstance(),結束同步事務(wù)。
2.2.2同步接收模式
當需要接收對方的SyncML同步回應(客戶(hù)端)或接收對方發(fā)起的SyncML同步(服務(wù)器端)時(shí),SyncMI事務(wù)管理模塊將使SRTK工作于同步接收模式。首先,應用程序調用smllnitlnstance()創(chuàng )建一個(gè)SyncMI同步事務(wù)(同時(shí)為其分配工作區緩存)。必要的情況下可以調用SyncSetSeesionOptions(),設置同步事務(wù)的參數。當事務(wù)被成功創(chuàng )建之后,應用程序就可以調用smlLockWrite Buffer()鎖定工作區緩存,同時(shí)利用接口xptReceiveData()接收同步消息文檔并保存到工作區緩存中。當應用程序完成同步消息文檔的接收后調用接口smlUnlockWrIte Buffer()將文檔交給SRTK進(jìn)行處理。當SRTK收到同步消息文檔后,將調用smlProcessData()進(jìn)行處理。該接口調用下層模塊解析同步消息文檔,并根據解析結果調用相應的命令處理回調函數完成相應的同步操作。最后,應用程序調用smlTerminatelnstance()結束同步事務(wù)。


3 SyncML CIient實(shí)現
鑒于大多數移動(dòng)終端設備處理能力和存儲能力有限與移動(dòng)通信網(wǎng)絡(luò )窄帶寬、長(cháng)延時(shí)、高成本和不可靠等特點(diǎn),一般只能在移動(dòng)終端設備上實(shí)現輕量級的SyncML 軟件,而且由于移動(dòng)終端市場(chǎng)的激烈競爭,軟件開(kāi)發(fā)的成本和上市時(shí)間等因素已成為相當敏感的指標。SyncML參考工具包由于其權威性、精簡(jiǎn)性、良好的可移植性、開(kāi)放源碼及可以免費使用等特點(diǎn),成為目前移動(dòng)終端設備上SyncML 實(shí)現的首選。
3.1 SyncMt CIilent設計
SyncML參考工具包作為開(kāi)放源碼的官方實(shí)現,為進(jìn)一步開(kāi)發(fā)SyncML同步軟件提供了良好的起點(diǎn),但僅僅SyncML參考工具包顯然是遠遠不夠的。本文在SyncML參考工具包的基礎上,和實(shí)現了工作于移動(dòng)終端上的SyncMI 軟件。
鑒于移動(dòng)終端平臺的多樣性,本軟件可能會(huì )被作為獨立的模塊移植到不同的硬件平臺和軟件平臺上,因此本軟件在設計上盡可能地考慮軟件的移植性。為達到這一目的,本軟件系統采用了分層的設計思想,一方面盡可能地將SyncML數據同步的主要實(shí)現邏輯封裝起來(lái),實(shí)現其平臺的無(wú)關(guān)性,另一方面,分別將對上和對下的與特定軟硬件環(huán)境相關(guān)的部分獨立出來(lái)構成SyncML同步用戶(hù)接口層和平臺適配層。這樣,在需要進(jìn)行軟件移植時(shí),開(kāi)發(fā)人員只需根據特定的軟硬件環(huán)境實(shí)現相應的SyncML同步用戶(hù)接口層和平臺適配層,從而在最大程度上保證了移植的方便性和快捷性。除此之外,考慮到移動(dòng)終端及移動(dòng)通信網(wǎng)絡(luò )的實(shí)際狀況,在設計中也充分考慮了嵌入式軟件開(kāi)發(fā)的要求,力爭使系統具有低存儲需求、低時(shí)間開(kāi)銷(xiāo)、高可靠性、高靈活1生、高互操作性和完備的功能實(shí)現等特點(diǎn)。
圖3為移動(dòng)終端SyncML Cllent軟件的結構設計。SyncML同步用戶(hù)接口是軟件的人機交互界面,它向用戶(hù)提供了啟動(dòng)、中止、配置數據同步的接口,同時(shí)用戶(hù)也能通過(guò)該接口實(shí)時(shí)獲取同步的狀態(tài)信息和結果信息。SyncML同步管理器是整個(gè)同步軟件的核心。它根據上層的相關(guān)配置信息和命令信息,分析日志管理模塊記錄的同步對象信息,讀取數據庫中相關(guān)同步對象數據并調用SyncML參考工具包生成同步消息,最后調用通信會(huì )話(huà)管理模塊的API發(fā)送同步消息。除此之外,它還接收通信會(huì )話(huà)管理模塊收到的同步消息,調用SyncML參考工具包進(jìn)行解析,然后根據解析結果調用數據庫接口修改同步對象信息,同時(shí)同步修改日志信息,最后向上層的SyncML同步用戶(hù)接口匯報同步的結果信息。通信會(huì )話(huà)管理模塊負責同步軟件和SyncML服務(wù)器之間的協(xié)議交互和消息收發(fā),同時(shí)管理本地的會(huì )話(huà)信息和事務(wù)切換工作,相當于SyncML發(fā)起組隨SyncML參考工具包一起發(fā)布的通信工具包。SyncML參考工具包負責同步消息的生成和解析工作。日志管理模塊負責記錄同步對象的修改信息,為實(shí)現與SyncML服務(wù)器的快速同步提供依據。數據庫接口實(shí)現同步對象的存取和修改等操作。平臺適配層為上述模塊提供必要的系統軟硬件平臺信息。

3.2 SyncML CIient實(shí)現
按照上面的設計方案,我們基于通用的智能手機軟硬件平臺實(shí)現了SyneML Client軟件。在實(shí)際的智能手機軟硬件平臺選擇上,基于成本和實(shí)際系統需求的考慮,選用了以Epson Slc33209為核心的硬件平臺和以Epson ROS33操作系統為核心的軟件平臺。開(kāi)發(fā)工具選用了Microsoft Visual C++6和Epson系列編譯、鏈接、下載和調試工具。在下層通信協(xié)議的選擇上,我們實(shí)現了HTTP和WSP傳輸協(xié)議。
在實(shí)際的SyncMI Client實(shí)現中,本軟件主要是用于個(gè)人信息管(Personal Information Management,PIM)軟件的信息同步。具體地說(shuō)就是同步移動(dòng)終端和遠端服務(wù)器上的通訊錄和日程安排信息。其中通訊錄信息的編碼格式遵循vCard2.1和vCard 3.O標準,日程安排信息的編碼格式遵循vCanlendar 1.O和iCanlendar 2.0標準。
為了保證最大程度上的互操作性,使得SyncML Cli_ent軟件能夠與任何符合SyncML數據同步規范的服務(wù)器進(jìn)行數據同步操作,我們嚴格按照SyncML數據同步規范1.1.1版本的一致性要求進(jìn)行軟件的開(kāi)發(fā)工作。開(kāi)發(fā)出的SyncML Client軟件功能包括:支持雙向同步、慢同步和服務(wù)器端請求同步三種同步類(lèi)型;支持SyncML表示協(xié)議中所要求的所有同步客戶(hù)端元素類(lèi)型;支持XML和WBXML兩種格式的同步信息編解碼功能;支持兩種安全認證方式,即基本認證方式和MD5摘要認證方式;支持將大的同步數據包拆分成多個(gè)網(wǎng)絡(luò )消息發(fā)送的機制和Large Objects模式;實(shí)現數據庫級的同步錨(Strnc Anchors);支持終端同時(shí)和多個(gè)服務(wù)器同步,本地保留多份同步日志信息(最多可同時(shí)保存5份同步日志信息)支持用于電子名片交換的vCard 2.1規范和vCard3.0規范;支持用于日歷及行程信息交換的vCalendar l.0規范和iCalendar 2.0規范;支持HTTP和WSP傳輸協(xié)議.
軟件開(kāi)發(fā)過(guò)程的一個(gè)主要難點(diǎn)是軟件的后期測試平臺的構建。當前國內開(kāi)通的SyncML服務(wù)器很少,相關(guān)運營(yíng)商的SyncML服務(wù)資料十分匱乏,給軟件的測試帶來(lái)了相當的困難。在實(shí)際測試中,我們通過(guò)構建自己的SyncML服務(wù)器和測試環(huán)境克服了這一方面的困難。我們運用Nexthaus SyncJe(tm)Personal Servel,Outlook Edi-tion作為遠端的SyncML同步服務(wù)器,同時(shí)通過(guò)WildPackets EtherPeek NX for Windows分析相應的同步消息,從而能夠在實(shí)際的移動(dòng)網(wǎng)絡(luò )中測試SyncML Cli_ent軟件。


結語(yǔ)
隨著(zhù)移動(dòng)計算的日益普及,人們對于移動(dòng)數據同步的需求正在不斷地增強,在一些領(lǐng)先的移動(dòng)終端制造商的產(chǎn)品中已經(jīng)出現SyncMI的蹤影。SyncML參考工具包作為SyncML發(fā)起組提供的官方參考實(shí)現,其很大程度上加快了SyncML同步軟件的開(kāi)發(fā)和普及。雖然在一定程度上由于其擁有大量API且不友好的開(kāi)發(fā)文檔,入門(mén)比較困難,但對于長(cháng)期的SyncMl同步軟件開(kāi)發(fā)而言,SyncML參考工具包已成為一個(gè)相當好的選擇。



關(guān)鍵詞: 研究 實(shí)現 Client SyncML

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>