王鵬,劉圣財,董洋
(1.長春理工大學(xué) 計算機科學(xué)技術(shù)學(xué)院,長春 130022;2.白俄羅斯國立大學(xué) 無線電物理和計算機技術(shù)學(xué)院)
汽車定位是一種集GPS、現(xiàn)代通信技術(shù)和定位顯示終端為一體現(xiàn)代高科技系統(tǒng)。它的功能主要是通過安裝在汽車的GPS定位設(shè)備實時地將汽車所在位置通過無線通信設(shè)備轉(zhuǎn)發(fā)到數(shù)據(jù)控制中心,然后通過Internet網(wǎng)絡(luò)顯示在終端電子地圖上。對于電子地圖顯示終端都采用AJAX和XML技術(shù),能夠?qū)崿F(xiàn)系統(tǒng)局部刷新的效果,但是在應(yīng)用開發(fā)中,因為需要傳輸和處理大量汽車定位的數(shù)據(jù)致使汽車定位顯示終端不再具有實時性。JSON的出現(xiàn)很好地解決了這個問題。JSON是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,也易于機器解析和生成[1],同時JSON的語法比較簡潔,這就大幅度地降低了服務(wù)器消耗資源和傳輸過程中所占用的帶寬,使用戶得到了更好的體驗。
AJAX的工作原理相當(dāng)于在用戶和服務(wù)器之間加了一個虛擬中間層,使用戶操作與服務(wù)器響應(yīng)異步化[2]。應(yīng)用AJAX的網(wǎng)站的特點就是它們的應(yīng)用程序盡管運行在瀏覽器里邊,卻表現(xiàn)的和其他桌面應(yīng)用程序一樣,這都得益于AJAX技術(shù),它將客戶端和服務(wù)器端的同步交互通信方式改變?yōu)楫惒浇换ネㄐ欧绞剑@樣把以前的一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利于客戶端閑置的處理能力來處理,減輕服務(wù)器和帶寬的負(fù)擔(dān)。其工作原理可以由圖1所示。
圖1 AJAX工作原理Fig.1 AJAX works
當(dāng)客戶端需要與服務(wù)器進(jìn)行數(shù)據(jù)通信傳輸時,需要經(jīng)由以下幾個步驟[2]:(1)建立連接的URL;(2)打開到服務(wù)器的連接;(3)設(shè)置服務(wù)器在完成后的回調(diào)函數(shù);(4)發(fā)送請求;(5)服務(wù)器響應(yīng)客戶端發(fā)送過來的請求,并返回給客戶端;(6)客戶端接受并處理服務(wù)器返回的結(jié)果。
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,它是基于JavaScript(Standard ECMA-262 3rd Edition-December 1999)一個規(guī)范的子集,能被支持JavaScript的瀏覽器所解析,且易于人閱讀和編寫,同時也易于機器解析和生成。相比XML,減少了解析時帶來的性能和兼容性問題,這些使JSON成為理想的數(shù)據(jù)交換語言。
其語法主要有以下格式:
(1)對象(object)是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’對”之間使用“,”(逗號)分隔。
圖2 對象格式Fig.2 Object format
(2)數(shù)組(array)是值(value)的有序集合。一個數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。值之間使用“,”(逗號)分隔。
圖3 數(shù)組格式Fig.3 Array format
汽車定位系統(tǒng)是一種集GPS,現(xiàn)代通信技術(shù)和用戶終端為一體的現(xiàn)代高科技系統(tǒng)。其主要由全球衛(wèi)星定位(GPS)、現(xiàn)代通信(GSM和GPRS)、定位顯示三部分組成。其主要原理是安裝在汽車GPS定位設(shè)備將汽車的位置信息通過GPRS實時地傳輸給網(wǎng)絡(luò)通信運營商,然后通過互聯(lián)網(wǎng)傳輸?shù)綌?shù)據(jù)控制中心服務(wù)器,安裝在服務(wù)器上的解析程序?qū)?shù)據(jù)解析并存儲在數(shù)據(jù)庫服務(wù)器中,汽車定位顯示終端通過互聯(lián)網(wǎng)將汽車的定位信息顯示在定位終端的電子地圖上,其原理如圖4所示。
圖4 汽車定位原理Fig.4 Vehicle positioning princip le
系統(tǒng)采用GPRS網(wǎng)通通信,具有實時地、全天候的特點,能夠及時準(zhǔn)確地定位汽車的信息,且汽車定位系統(tǒng)的通信費用低,定位設(shè)備價格合理,定位終端顯示非常直觀具有人性化等特點,因此具有更廣闊的市場推廣空間。
AJAX是一種基于瀏覽器異步請求服務(wù)器端響應(yīng)的技術(shù),在AJAX應(yīng)用當(dāng)中,XMLHttpRequset異步傳輸、服務(wù)端響應(yīng)及頁面JavaScript解析是異步通信的關(guān)鍵。對于少量簡單的信息傳輸我們采用純文本進(jìn)行傳輸,但當(dāng)信息變得復(fù)雜時我們通常會采用XML數(shù)據(jù)傳輸標(biāo)準(zhǔn)方式。XML可以把結(jié)構(gòu)和元數(shù)據(jù)添加到數(shù)據(jù)上,實際上是將數(shù)據(jù)組織成為一個樹模型,樹的節(jié)點是一個對象,這為處理XML文檔的所有方面提供了一個完美的概念性框架。通過操作這棵樹和這些對象就可以完成對XML文檔的操作,所以生成和解析XML格式文件就顯得非常復(fù)雜,JSON的出現(xiàn)給我們提出了一個新的數(shù)據(jù)傳輸格式。
利用JSON進(jìn)行數(shù)據(jù)批量異步傳輸是汽車定位的重要部分,可以使頁面對數(shù)據(jù)進(jìn)行無刷新的傳輸,提取和更新等,承擔(dān)了對用戶信息請求的解析、運算執(zhí)行及返回結(jié)果的處理。此模塊代替了采用XML的SOAP協(xié)議,而利用簡明的文本信息進(jìn)行連接和傳遞,提高了系統(tǒng)的效率、降低了傳輸過程中所占用的帶寬。
對于用于查詢汽車行駛軌跡時,頁面根據(jù)用戶輸入的汽車牌照等信息利用AJAX引擎發(fā)送到服務(wù)器進(jìn)行異步數(shù)據(jù)處理,并從數(shù)據(jù)庫控制中心查詢到汽車的行駛軌跡信息經(jīng)過序列化返回給頁面,頁面JavaScript經(jīng)過反序列化轉(zhuǎn)換成JSON對象,根據(jù)汽車行駛軌跡動態(tài)實時地顯示在電子地圖上。其中異步數(shù)據(jù)處理及序列化是在后臺進(jìn)行的,對用戶來說是不可見的,用戶感覺是一步到位得到其想獲得的數(shù)據(jù),而沒有感覺到任何頁面提交刷新的操作。
汽車軌跡回放是汽車定位系統(tǒng)的亮點也是一個難點,用戶通過定位終端實時查看汽車歷史行駛軌跡。與傳統(tǒng)的汽車定位系統(tǒng)相比,該汽車具有數(shù)據(jù)傳輸快、數(shù)據(jù)處理迅速、操作實行性、軌跡回放直觀等特點。
汽車軌跡回放過程可以分為以下四步:
(1)頁面提交用戶的汽車信息和時間檢索范圍并發(fā)送至服務(wù)器。
(2)服務(wù)器查詢出汽車軌跡,并將序列化成JSON字符串返回給客戶端。
(3)回調(diào)函數(shù)接收并反序列化JSON對象。
(4)客戶端根據(jù)JSON對象中時間和經(jīng)緯度等信息顯示在電子地圖中。
汽車軌跡回放過程中可以清晰的查看汽車的行駛信息,方便用戶了解汽車在任意時刻的行駛狀態(tài)。汽車軌跡回放支持Google Map和Super Map兩種電子地圖的無縫接切換,方便不同的用戶有選擇地在不同的電子地圖查看汽車軌跡回放。
此外,系統(tǒng)開放接口,支持第三方軟件的共享訪問,第三方軟件可根據(jù)系統(tǒng)規(guī)定的接口參數(shù)訪問系統(tǒng)。在此過程中系統(tǒng)添加安全校驗機制,防止非法用戶訪問并竊取用戶信息。用戶每一次訪問都必須用根據(jù)操作時間和客戶端的MAC地址遠(yuǎn)程訪問WebService請求操作的密鑰對請求信息進(jìn)行加密,然后系統(tǒng)根據(jù)密鑰對訪問信息進(jìn)行解密。密鑰只能使用一次,用后過期,保證了系統(tǒng)的安全性,防止非法用戶盜取系統(tǒng)中的用戶和汽車信息。其訪問原理如6所示。
圖5 訪問原理Fig.5 Access princip le
JSON序列化就是將數(shù)據(jù)對象轉(zhuǎn)換成可以保存和傳輸文本的過程;與之相反的就是反序列化,將文本信息轉(zhuǎn)換成JSON對象的過程。這兩個過程結(jié)合起來可以高效率地執(zhí)行后臺對象轉(zhuǎn)換JSON、JSON的傳輸及前臺JSON轉(zhuǎn)換對象等操作[3]。
服務(wù)器利用遍歷數(shù)據(jù)對象將對象轉(zhuǎn)換成JSON格式的本文。
客戶端根據(jù)AJAX回調(diào)函數(shù)接收的文本直接用eval方法轉(zhuǎn)換成JSON對象,實現(xiàn)反序列化,使之可以更好地運行在客戶端的瀏覽器上,且操作非常簡單。
var mJson=eval("("+ttpRequest.responseText+")");
在WEB開發(fā)領(lǐng)域中,主要有XML和JSON兩種數(shù)據(jù)傳輸格式。XML即可擴展標(biāo)記語言(Extensible Markup Language),是一種與平臺無關(guān)的表示數(shù)據(jù)的方法。使用XML創(chuàng)建的數(shù)據(jù)可在任何應(yīng)用程序平臺上讀取,甚至可以通過手動編碼來編輯和創(chuàng)建XML文件,作為一種廣泛推廣的數(shù)據(jù)傳輸標(biāo)準(zhǔn)手段,XML所能發(fā)揮的作用是無庸置疑的,但是使用XML需要客戶端和服務(wù)器端都對其文件進(jìn)行復(fù)雜解析。JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,它衍生自JavaScript的對象實字,對于解析非常方便。JSON和XML比較有如下幾個方便[4]:
可讀性:JSON和XML的可讀性可謂不相上下,一邊是建議語法,一邊是規(guī)范的標(biāo)簽形式。
擴展性:XML天生有很好的擴展性,JSON當(dāng)然也有,沒有什么XML能擴展,JSON不能擴展的。
編碼難度:XML的發(fā)展和應(yīng)用時間較久,形成了豐富的編碼工具,這點JSON比較欠缺,但是JSON的編碼本分比較容易,及時不借助工具也能寫出JSON的代碼,而且已經(jīng)有一些開發(fā)商相繼提供支持JSON對象的編寫工具。
解碼難度:XML的解析得考慮子節(jié)點和父節(jié)點,讓人頭昏眼花,而JSON的解析難度幾乎為0,這一點XML就遜色的多。
與XML一樣,JSON也是基本文本,且他們都使用Unicode編碼,同樣具有可讀性。通過將它們的特性進(jìn)行比較,可以發(fā)現(xiàn)JSON簡化了數(shù)據(jù)編碼,數(shù)據(jù)訪問和數(shù)據(jù)傳輸,從而降低了系統(tǒng)使用服務(wù)器的資源和傳輸過程中所占的帶寬,比較適合使用在大量數(shù)據(jù)傳輸與實時數(shù)據(jù)交換處理,相比較XML比較合適標(biāo)記文檔。
雖然JSON的應(yīng)用才剛剛起步,但是JSON以其輕巧的傳輸,簡單的編碼和解析等優(yōu)勢,使得其受用越來越廣泛的應(yīng)用,在利用AJAX的應(yīng)用程序中效果更為突出。與AJAX的異步交互技術(shù)相結(jié)合,不但提高了網(wǎng)頁的連續(xù)性,而且還降低了服務(wù)器資源的使用和傳輸過程中所占用的帶寬,加快了Web的響應(yīng)速度,在汽車定位系統(tǒng)中的使用就體現(xiàn)了它的優(yōu)越性。
[1]崔璨,倪宏.使用JSON對AJAX技術(shù)中的XML性能的優(yōu)化仿真[J].2009,08(42):108-110
[2]韓義波,宋莉,宋俊杰.AJAX技術(shù)結(jié)合XML或JSON的使用比較[J].電腦知識與技術(shù),2009(1):101-103
[3]高靜,段會川.基于移動設(shè)備的JSON數(shù)據(jù)傳輸效率研究[J].信息系統(tǒng)與信息化,2011(1):13-15.
[4]陳竹,戴愛德,王月粉.JSON數(shù)據(jù)交換語言在Mashup-Web服務(wù)下的應(yīng)用.信息技術(shù),2009(5):24-28.