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