王國飛 李質建


摘要:目前嵌入式數據庫已在移動終端平臺得到廣泛使用,但是不同廠商的數據庫產品之問還存在不兼容性問題,特別是在嵌入式數據庫與服務器數據源同步更新的問題上顯得尤為突出。考慮到商業產品的價格以及兼容性問題,本文提出了一種基于Web Service的嵌入式數據庫同步更新解決方案,并采用序列化、壓縮和附件技術等機制在性能上進行優化,以滿足實際商業或科研應用的需要,是一種比較好的可行的解決方案,對系統項目建設具有示范和借鑒意義。
關鍵詞:嵌入式數據庫;Web Service;同步更新;序列化;壓縮;附件技術
中圖分類號:rrP393 文獻標識碼:A
文章編號:1009-3044(2020)20-0051-02
1國內外的移動應用軟件的發展
隨著移動應用開發技術的發展和智能移動終端的普及,移動應用軟件這個前景寬廣的領域已經受到越來越多軟件廠商的關注。如何通過一種機制來訪問多種數據庫實現同步更新,并兼容跨平臺之間的互操性,Web Service技術很好地解決了這個問題,在當前的桌面分布式數據庫中Web Service已經得到廣泛的應用。本文主要探討通過Web Service實現嵌入式數據庫與服務器數據源的同步更新,并以微軟的.NET平臺實現SOL Server CE與Oracle同步更新為例,得到一種基于Web Ser-vlce的嵌入式數據庫同步更新的解決方案,并采用序列化、壓縮和附件技術等機制在性能上進行優化,最后得到優化的解決方案。
2基于Web Service的嵌入式數據庫同步更新解決方案實現
現在主流的開發平臺上都可以開發基于Web Service的應用,如Eclipse,Visual Studio等,而且都對Web Service的發布,查找和生成本地代理等過程進行了簡化操作,使得開發人員能更容易的開發基于Web Service的應用。Web Service一旦部署就可以在項目中調用,主要分為靜態調用和動態調用。兩種方法沒用本質的區別,靜態調用是只能固定調用某個Web Service(URL固定),而動態調用可以通過配置以達到按跨平臺調用的目的。
2.1嵌入式數據庫同步更新的解決方案系統架構及實現
Web Service是完全基于XML/XSD的標準的新平臺,是個獨立的系統軟件,它可以進行跨網絡的計算機操作,同時作為一種分布式的計算技術,實現了異構系統相互的通信與共享操作。所以在系統集成方案中通常將Web Service作為中間層。在本解決方案中,服務器端數據的更新是在移動設備端來觸發,移動設備端查看并操作數據、處理一些或所有的業務規則,同時提供一個豐富的用戶界面做出響應,因此Web ServiCe中既包含了各種對服務器端數據庫取的操作還包含了各種對服務器端數據庫存的操作。具體的系統架構如圖1所示。
下面簡單介紹利用Visual Studio.NET 2008環境來實現整個流程。
1)建立Web ServiCe
建立好ASP.NET web service 工程后,在文件Service.cs中添加連接和存取服務器數據源(如oracle等)的操作。
2)本地調用Web ServiCe
部署Web Service后,新建一個Smart Device應用程序(移動設備程序)項目,添加Web引用會在本地生成代理文件Ref-erenCe.cs,可修改此文件按需調用不同的Web ServiCe。
在.NET環境中調用Web Service的方法和創建本地類并調用其方法的過程是十分類似的。由于這只是簡單介紹使用Web ServiCe的整個流程,所以業務規則并沒有真正體現出來,實際的業務復雜的多,需要控制數據重復多、同步失敗等問題,但都是建立在最基本的存取數據操作上。另外考慮到網絡及安全等因素,在實際的商業軟件的開發中還需要加入異常處理等代碼。
2.2 Web Service數據壓縮傳輸
XML Web ServiCe是通過SOAP(簡單對象訪問協議)協議進行交互的,而SOAP消息是利用XML進行描述的。使用XML描述SOAP消息的好處是使得Web Service可以跨平臺調用,成就了Web Service的巨大魅力。移動終端的性能,無線或偶爾連接的網絡等因素對傳輸性能提出了更高的要求。基于SOAP協議的Web Services已經成為網絡應用發展的主流,其主要機制有基于數據的壓縮,基于Web Service附件技術,基于訪問模式的優化(異步),基于緩存機制的優化等等。在移動平臺的應用中主要也采用前兩種機制。下面利用這些機制對我們的解決方案進行優化得到基于Web ServiCe的嵌入式數據庫同步更新數據壓縮傳輸解決方案。
2.2.1序列化與反序列化
在數據傳輸之前要將數據(對象)轉換成可保持或傳輸的格式,這一過程稱為序列化,與序列化相對的是反序列化,它將數據流轉換為對象。序列化用在WEB應用開發中可以解決數據庫調用困難的問題,使用經過序列化的流進行傳輸效率會得到大大的提升,Web Service基于SOAP協議,SOAP協議也是以對象的可序列化為基礎的。XML序列化僅將對象的公共字段和屬性值或者方法的參數和返回值轉換(序列化)為符合特定XML架構定義語言(XSD)文檔的XML流。對Web Service來說,這是最普遍應用的一種淺層序列化。另一種為深層序列化,是將對象的公共字段和私有字段以及類的名稱(包括包含該類的程序集)都被轉換為字節流,然后寫入數據流。這就更方便、更準確地還原了對象的副本。選擇序列化的原因有兩個:
(1)將對象的狀態保持在存儲媒體中,以便可以在以后重新創建精確的副本;
(2)通過值將對象從一個應用程序域發送到另一個應用程序域中。
在使用經過序列化的流進行傳輸效率會得到大大的提升,深層序列化可進一步提高網絡傳輸的性能。在主流開發平臺和語言下,序列化已經封裝成了接口或者開發平臺已經把某類型數據進行了序列化(XML序列化),使開發者從底層脫離出來以提高開發效率。序列化過程最后返回字節數組,可以大大壓縮數據集對象的體積。
2.2.2壓縮與解壓縮
數據壓縮技術一直以來是人們研究的重點,壓縮的效率也越來越高。現在已經有很成熟的算法以及工具包(組件)。經常使用的數據壓縮APl有zip、gzip等方式。Web Service中壓縮的使用非常簡單,就是在發送XML流之前對XML流進行壓縮,在接收端對已經壓縮的XML流進行解壓縮就可以了。針對不同文件格式采用成熟的壓縮和解壓縮技術,降低I/O器件的存取頻率,有助于增強整個系統的性能,尤其當數據量比較大的時候,可以大大提高傳輸效率。對于純文本的XML,壓縮可以減少其80%以上的體積。壓縮和解壓縮往往會具有很大的CPU占有率以及內存占有率,雖然可以使得XML的體積大大減少,但是其過程卻是十分耗費系統資源的。對于配置不高的客戶端甚至是服務器端,都會造成不小的壓力。而對于系統響應XML來講,一般都包含大量的數據,導致其體積龐大,需要進行壓縮處理。
2.2.3 Web Service附件技術
Web ServiCe使用SOAP作為其標準的數據交換協議,使用SOAP進行傳遞的數據首先被序列化(XML序列化),也就是將數據轉換成字符串在XML文檔中傳送。盡管使用Base64編碼能夠將二進制數據放入SOAP報文中進行傳輸,然而,其效率非常低下。Web Service附件技術的工作原理是將二進制數據作為SOAP消息的附件,而不作為SOAP消息的內容進行發送。這樣可以避免對二進制數據進行XML序列化,因為序列化的只是SOAP消息的內容。
我們在傳輸二進制文件,如圖像、聲音和視頻等,利用WebService附件技術傳輸和處理效率會得到進一步提高。在我們的嵌入式數據庫同步解決方案中主要利用Web Service附件技術傳輸壓縮后的二進制數據集以提高性能,當然上傳下載二進制文件(如圖2)可直接使用附件技術。
綜上所述,我們將Web Service數據壓縮傳輸技術應用到最初的解決方案中,得到更優化的系統結構圖(圖2)。
3實驗結果
本實驗主要是以微軟的.NET平臺實現SQL Server CE與Oracle同步更新為例,得到一種基于Web Service的嵌入式數據庫同步更新的解決方案,并使之最優化,對其他系統的搭建、開發具有借鑒和示范效應。
4結束語
本文針對實際移動應用軟件中,對嵌入式數據庫與服務器數據源同步更新兼容性問題提出了基于Web Service的一種解決方案,并考慮到移動終端性能和網絡性能等對解決方案進行了優化以解決數據傳輸性能問題。雖然本方案解決了系統兼容性和數據傳輸性能問題,但是沒有對安全問題進行探討,實際商業或科研應用中可以根據需要加入Web Service訪問加密技術、簽名技術等安全機制,以便得到更完美的解決方案。
參考文獻:
[1]萬忠.移動應用開發行業現狀分析[J].中國科技縱橫,2017(8).
[2]王輝,馬維華.基于SQL Server CE數據同步技術的研究與實現[J].計算機技術與發展,2008,18(4):232-235.
[3]劉軍.基于Web Service的數據庫同步系統的設計與實現研究[J].電子技術與軟件工程,2017(2).
[4]劉益.基于Web Service移動數據的同步[J].(數字通信)前沿技術,2011.
【通聯編輯:李雅琪】
收稿日期:2020-03-27
作者簡介:王國飛(1980-),河南洛陽人,畢業于武漢大學計算機學院,碩士,研究方向:計算機應用技術。