版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、利用JSON 實(shí)現(xiàn)Android 高效、安全訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的一種方式權(quán)重民1,彭昕昀2(1.西安思源學(xué)院信息化辦公室,陜西西安710038;2.韶關(guān)學(xué)院物理與機(jī)電工程學(xué)院,廣東韶關(guān)512005摘要:隨著手機(jī)及移動(dòng)設(shè)備的快速的發(fā)展,越來(lái)越多的移動(dòng)終端需要訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,利用JSON 通用標(biāo)準(zhǔn)封裝,通過(guò)HTTP 協(xié)議傳輸,利用Web 應(yīng)用服務(wù)器訪問(wèn)數(shù)據(jù)庫(kù),并且使用加密和壓縮保證了數(shù)據(jù)傳輸?shù)男屎桶踩?非常適合中小型移動(dòng)程序的實(shí)際應(yīng)用.關(guān)鍵詞:Android ;數(shù)據(jù)庫(kù);JSON ;Web 應(yīng)用服務(wù)器中圖分類號(hào):TP392文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-5348(201112-0016-05韶關(guān)
2、學(xué)院學(xué)報(bào)·自然科學(xué)Journal of Shaoguan University ·Natural Science 2011年12月第32卷第12期Dec.2011Vol.32No.12收稿日期:2011-10-25作者簡(jiǎn)介:權(quán)重民(1974-,男,陜西西安人,西安思源學(xué)院信息化辦公室工程師,碩士,主要從事計(jì)算機(jī)網(wǎng)絡(luò)及數(shù)據(jù)庫(kù)方面的研究.近2年,隨著智能手機(jī)及平板電腦的快速發(fā)展,同時(shí)伴隨著3G 網(wǎng)絡(luò)的逐漸普及,移動(dòng)開發(fā)越來(lái)越受到開發(fā)人員的青睞,而谷歌推出的Android 系統(tǒng)以其開放、優(yōu)秀的特性很快受到開發(fā)人員的推崇,很多知名網(wǎng)站都推出了Android 客戶端版本,例如騰訊、新
3、浪、淘寶都有對(duì)應(yīng)的版本.同時(shí)很多數(shù)據(jù)庫(kù)應(yīng)用程序都從原來(lái)的Windows 桌面程序延伸到移動(dòng)設(shè)備上,由于移動(dòng)設(shè)備的性能及內(nèi)存等肯定無(wú)法與臺(tái)式機(jī)及筆記本電腦相比,訪問(wèn)數(shù)據(jù)庫(kù)也不可能像桌面安裝各種數(shù)據(jù)庫(kù)的客戶端,當(dāng)然目前絕大多數(shù)數(shù)據(jù)庫(kù)也沒有直接運(yùn)行在移動(dòng)設(shè)備的客戶端,由于手機(jī)及移動(dòng)設(shè)備很多時(shí)間都是利用3G 通過(guò)互聯(lián)網(wǎng)訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的,為了能夠讓手機(jī)及移動(dòng)設(shè)備訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù),必須選用一種通用、快速、安全的方法.經(jīng)過(guò)各種方式的測(cè)試及實(shí)驗(yàn),筆者選用了JSON 作為Android 設(shè)備訪問(wèn)Web 應(yīng)用服務(wù)器的中間橋梁,再通過(guò)Web 應(yīng)用服務(wù)器訪問(wèn)數(shù)據(jù)庫(kù)的,并對(duì)數(shù)據(jù)傳輸過(guò)程進(jìn)行壓縮和加密,實(shí)現(xiàn)了高效、安全的數(shù)
4、據(jù)庫(kù)訪問(wèn),并經(jīng)過(guò)實(shí)際應(yīng)用,效果較好,達(dá)到了預(yù)期要求.1JSON 的基本原理及訪問(wèn)數(shù)據(jù)庫(kù)實(shí)現(xiàn)JSON(JavaScript Object Notation是一種輕量級(jí)的數(shù)據(jù)交換格式.JSON 可以將JavaScript 對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從Web 客戶機(jī)傳遞給服務(wù)器端程序.這個(gè)字符串看起來(lái)有點(diǎn)兒古怪,但是JavaScript 很容易解釋它,而且JSON 可以表示比名稱(值對(duì)更復(fù)雜的結(jié)構(gòu).例如,可以表示數(shù)組和復(fù)雜的對(duì)象,而不僅僅是鍵和值的簡(jiǎn)單列表1.因此JSON也非常適合傳輸數(shù)據(jù)庫(kù)的記錄類型,圖1為直接返回JSO
5、N 運(yùn)行模式 .第12期Android 設(shè)備要訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù),先通過(guò)HTTP 協(xié)議,發(fā)送數(shù)據(jù)請(qǐng)求給后臺(tái)Web 應(yīng)用服務(wù)器,應(yīng)用服務(wù)器根據(jù)請(qǐng)求,生成相應(yīng)的SQL 語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,并把讀取的數(shù)據(jù)庫(kù)內(nèi)容封裝成JSON 格式,通過(guò)HTTP 協(xié)議回傳給Android 設(shè)備,Android 設(shè)備再對(duì)JSON 解析,并顯示到對(duì)應(yīng)的UI 上,如圖1所示.考慮到應(yīng)用服務(wù)器豐富的數(shù)據(jù)庫(kù)連接特性及高效的HTTP 處理能力,并可運(yùn)行在Windows 和Linux 下2,采用Del -phi 編寫.Android 客戶端開發(fā)主要使用Basic4Android,這個(gè)產(chǎn)品使用Basic 語(yǔ)言開發(fā)Android 程序,
6、其封裝了大量的Java 類,簡(jiǎn)化了很多復(fù)雜的語(yǔ)法,非常容易上手,同時(shí)提供了強(qiáng)大的開發(fā)能力,并且支持各種復(fù)雜的HTTP 協(xié)議的應(yīng)用.為了實(shí)現(xiàn)數(shù)據(jù)庫(kù)字段及內(nèi)容通過(guò)HTTP 協(xié)議傳輸,首先需要把數(shù)據(jù)庫(kù)字段封裝為JSON.現(xiàn)有一個(gè)表,用來(lái)表示學(xué)生信息,其結(jié)構(gòu)為:create table XSJLB(nf VARCHAR2(4not null,xh NUMBER(22not null,xm VARCHAR2(30,xb VARCHAR2(2,csny DATE,sfzh VARCHAR2(18,zzmm VARCHAR2(32,mz VARCHAR2(16,lysfdm VARCHAR2(6,lysfm
7、c VARCHAR2(30,lydsdm VARCHAR2(6,lydsmc VARCHAR2(30,lyqxdm VARCHAR2(6,lyqxmc VARCHAR2(30,byxx VARCHAR2(40,hkzh VARCHAR2(18,hkcj NUMBER(22,2,jg VARCHAR2(30,lxdz VARCHAR2(200,lxdzyzbm VARCHAR2(6,lxdh VARCHAR2(40,lxr VARCHAR2(30,dzyx VARCHAR2(40,bmzyflxh NUMBER(6,bmzyxh NUMBER(4,xxly VARCHAR2(40,bz VARC
8、HAR2(2000,sysbz VARCHAR2(1,fwq VARCHAR2(40,bmfs VARCHAR2(40,czsf VARCHAR2(40,cjczy VARCHAR2(32,cjsj DATE,czy VARCHAR2(32,czsj DATE,lyip VARCHAR2(23,sbz VARCHAR2(1,ssj DATE,knx NUMBER(22,3,jbrbm VARCHAR2(8,qq ARCHAR2(15.經(jīng)過(guò)JSON 封裝后就會(huì)變成以下格式:"topics":"BMZYMC":"u5e02u573au8425u95
9、00","LYSFMC":"u9655u897fu7701","LYQXMC":"u6d1bu5dddu53bf","LYDSMC":"u5ef6u5b89u5e02","XM":"u738bu718au535a","XH":"60535","XB":"u7537","QQ":"","MZ"
10、;:"u6c49u65cf","BZ":"","BMZYFLMC":"u6587u7ba1u4e13u79d1u65b0u5e72u7ebf","SFZH":"610629*","NNNZ":"1","LXDZ":"u9655u897fu7701u6d1bu5dddu53bfu767eu76ca","LXDH":"152*","
11、CSNY":"1992-08-18","CJSJ":"2011-10-26","BYXX":"u6d1bu5dddu4e2du5b66","BMFS":"u6821u5185u804cu5de5","total -Count":"1",這一段JSON 封裝文本是根據(jù)數(shù)據(jù)庫(kù)里面的一條記錄對(duì)應(yīng)生成的.里面字段名后面跟著記錄的值,例如“LYSFMC:u9655u897fu7701”,字段名是LYSFMC(來(lái)源省份
12、名稱,“u9655u897fu7701”是陜西省的對(duì)應(yīng)Unicode 編碼.客戶端通過(guò)HTTP 協(xié)議接收到JSON 封裝文本后,通過(guò)內(nèi)部的JSON 解析器,解析出對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi)容,然后通過(guò)UI 顯示出來(lái).權(quán)重民,等:利用JSON 實(shí)現(xiàn)Android 高效、安全訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的一種方式17··韶關(guān)學(xué)院學(xué)報(bào)·自然科學(xué)2011年圖2為Android 主界面,其客戶端解析JSON 代碼示例如下:Sub loadxinxi(s As StringDim JSON As JSONParserDim Master As MapDim records As ListDim XIN
13、XI As MapDim recordcount As StringClearAllDim h(4As Stringh(0="序號(hào)"h(1="姓名"h(2="地市"h(3="日期"NumberOfColumns =h.LengthColumnWidth =SV.Width /NumberOfColumns 'update the columns widthsColumnWidth_1=ColumnWidth-ColLineWidthSetHeader(hIf s.Length<20ThenMsgbox
14、("沒有報(bào)名信息","提示"ReturnEnd IfJSON.Initialize(smaster =JSON.NextObjectrecords=master.Get("topics"Dim data(4As StringDim row(As Stringshowcount=records.SizeFor i=0To showcount-1XINXI=records.Get(idata(0=xinxi.Get("XH"data(1=xinxi.get("XM" data(2=xinxi.get
15、("LYDSMC"data(3=xinxi.get("CJSJ"row =dataAddRow(rowNext 圖2Android 主界面18··第12期recordcount=master.Get("totalCount"h(0="合計(jì)"h(1=recordcount&"條"h(2=""h(3="前"&showcount&"條"setfooter(hEnd Sub.2提高JSON的傳輸效率與
16、提高數(shù)據(jù)庫(kù)訪問(wèn)效率雖然以上方式已經(jīng)解決了訪問(wèn)數(shù)據(jù)庫(kù)的問(wèn)題.但是在實(shí)際應(yīng)用中,該方式存在很大的問(wèn)題.由于JOSN 是通過(guò)文本封裝數(shù)據(jù)的,當(dāng)記錄條數(shù)比較多時(shí),數(shù)據(jù)量非常大,由于移動(dòng)設(shè)備大都是通過(guò)3G上網(wǎng),帶寬相對(duì)比較低,同時(shí)流量費(fèi)用高,因此必須通過(guò)壓縮來(lái)減少傳輸?shù)臄?shù)據(jù)量,由于Android設(shè)備支持標(biāo)準(zhǔn)的ZIP解壓縮,因此在應(yīng)用服務(wù)器同樣采用ZIP壓縮生成的JSON文本,經(jīng)過(guò)測(cè)試原來(lái)的664條數(shù)據(jù)的JSON封裝文本的大小約為64.3KB,經(jīng)過(guò)壓縮后,生成的壓縮流約為8.97KB,不到原來(lái)大小14%,大大的提高了網(wǎng)絡(luò)傳輸效率及訪問(wèn)數(shù)據(jù)庫(kù)的速度,也減少了網(wǎng)絡(luò)流量,節(jié)省了上網(wǎng)費(fèi)用.由于在本方法里面采用了W
17、eb應(yīng)用服務(wù)器,可以把頻繁訪問(wèn)的數(shù)據(jù)庫(kù)內(nèi)容緩存到Web應(yīng)用服務(wù)器,不同的這樣客戶端訪問(wèn)相同的數(shù)據(jù)時(shí),不需要每次都到數(shù)據(jù)庫(kù)里讀取,大大減少數(shù)據(jù)庫(kù)的訪問(wèn)操作次數(shù),減少數(shù)據(jù)庫(kù)的壓力,提高數(shù)據(jù)庫(kù)的訪問(wèn)效率.3加強(qiáng)遠(yuǎn)程訪問(wèn)的安全性隨著移動(dòng)終端及網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)陌踩珕?wèn)題也越來(lái)越大,一旦出現(xiàn)安全問(wèn)題,系統(tǒng)的信息就會(huì)泄漏失密,導(dǎo)致不可預(yù)測(cè)的后果.而Web應(yīng)用服務(wù)器在互聯(lián)網(wǎng)上是通過(guò)HTTP協(xié)議傳輸信息,都是通過(guò)明碼傳輸?shù)?可以通過(guò)軟件或者硬件的方法得到HTTP傳輸?shù)膬?nèi)容,這一點(diǎn)是非常不安全的,當(dāng)然可以通過(guò)HTTPS實(shí)現(xiàn)安全傳輸,但是需要在服務(wù)器上安裝證書,客戶端也必須支持HTTPS,實(shí)際應(yīng)用中比
18、較麻煩,因此考慮自行加密傳輸內(nèi)容,并在客戶端通過(guò)短信等方式給信任終端下發(fā)解密密碼,Android設(shè)備使用下發(fā)的密碼進(jìn)行解密,恢復(fù)原 始數(shù)據(jù).同樣為了保證系統(tǒng)的通用性,服務(wù)器和客戶端都采用3DES來(lái)加密和解密.4結(jié)語(yǔ)研究表明,在實(shí)際應(yīng)用中必須使用壓縮和加密來(lái)保證JSON傳輸?shù)母咝Ъ鞍踩?并通過(guò)Web應(yīng)用服務(wù)器緩存服務(wù)器數(shù)據(jù),提高數(shù)據(jù)庫(kù)訪問(wèn)效率,經(jīng)過(guò)優(yōu)化及改造后,整個(gè)系統(tǒng)運(yùn)行方式如圖3所示.雖然Android訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的方法比較多,但是上述這種方法韶關(guān)學(xué)院學(xué)報(bào)·自然科學(xué)2011年比較靈活,通過(guò)HTTP 協(xié)議訪問(wèn)應(yīng)用服務(wù)器,避免了防火墻造成的麻煩,同時(shí)對(duì)后臺(tái)數(shù)據(jù)庫(kù)沒有特殊要求,支持目
19、前的各種流行的數(shù)據(jù)庫(kù),并可以根據(jù)實(shí)際應(yīng)用將一些比較復(fù)雜的邏輯計(jì)算放到應(yīng)用服務(wù)器上,客戶端只需發(fā)送相應(yīng)的HTTP 請(qǐng)求,并只處理返回結(jié)果,降低了移動(dòng)終端的要求,同時(shí)保證了系統(tǒng)的高效及安全.另外由于本方法采用了JSON 及標(biāo)準(zhǔn)HTTP 協(xié)議,因此也同樣適合IPhone 及IPad 應(yīng)用,為各種移動(dòng)設(shè)備高效、安全訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)提供了一種思路.參考文獻(xiàn):1Brett McLaughlin.使用JSON 進(jìn)行數(shù)據(jù)傳輸EB/OL .2007-04-09. 開發(fā)與應(yīng)用M .北京:機(jī)械工業(yè)出版社,2003.3Erel Uziel.HttpUtils -Android web services are now
20、simple!EB/OL .2005-05-15. -droid-getting-started-tutorials/9176-httputils-android-web-services-now-simple.html.An efficient and safe way of accessing remote databases byJSON in Android systemQUAN Zhong-min 1,PENG Xin-yun 2(1.Information Office,Xi an Siyuan College,Xi an 710038,Shanxi,China ;2.Institute of Physics an
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專屬2024年商品銷售代表協(xié)議版
- 專業(yè)倉(cāng)儲(chǔ)及配送服務(wù):2024協(xié)議范本版A版
- 科技驅(qū)動(dòng):公司未來(lái)發(fā)展
- 2025年度彩鋼房拆除與綠色建筑認(rèn)證服務(wù)合同范本4篇
- 2025年度影視基地場(chǎng)地借用及拍攝制作合同4篇
- 2025年度科研實(shí)驗(yàn)場(chǎng)地使用權(quán)出讓及研發(fā)支持服務(wù)合同4篇
- 二零二五年度抽沙船租賃及海洋環(huán)境監(jiān)測(cè)協(xié)議3篇
- 2025年度新型工業(yè)園區(qū)土地使用權(quán)交易合同范本4篇
- 2025年智能工廠設(shè)備租賃居間合同示范文本4篇
- 2025年度長(zhǎng)租公寓運(yùn)營(yíng)管理服務(wù)合同4篇
- 領(lǐng)導(dǎo)溝通的藝術(shù)
- 發(fā)生用藥錯(cuò)誤應(yīng)急預(yù)案
- 南潯至臨安公路(南潯至練市段)公路工程環(huán)境影響報(bào)告
- 綠色貸款培訓(xùn)課件
- 大學(xué)生預(yù)征對(duì)象登記表(樣表)
- 主管部門審核意見三篇
- 初中數(shù)學(xué)校本教材(完整版)
- 父母教育方式對(duì)幼兒社會(huì)性發(fā)展影響的研究
- 新課標(biāo)人教版數(shù)學(xué)三年級(jí)上冊(cè)第八單元《分?jǐn)?shù)的初步認(rèn)識(shí)》教材解讀
- (人教版2019)數(shù)學(xué)必修第一冊(cè) 第三章 函數(shù)的概念與性質(zhì) 復(fù)習(xí)課件
- 重慶市銅梁區(qū)2024屆數(shù)學(xué)八上期末檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論