姜宇
摘 要:作為當今主流的Web開發(fā)技術(shù),AJAX在電子政務信息系統(tǒng)中的廣泛應用,對于提高用戶體驗和政府辦公效率有其獨特的優(yōu)勢。但其中基于XML進行的數(shù)據(jù)傳輸,由于需要DOM解析,導致占用系統(tǒng)資源較多,對于瀏覽器來說會導致文件解析資源消耗嚴重的問題。本文提出使用輕量級的JSON格式作為數(shù)據(jù)負載,摒棄了DOM對XML文件解析的復雜性,可大幅提高數(shù)據(jù)交換的速率和頁面呈現(xiàn)的實時性。
關(guān)鍵詞:AJAXJSONXML
中圖分類號:TM6 文獻標識碼:A 文章編號:1674-098X(2012)05(c)-0036-01
1 引言
隨著計算機技術(shù)和互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,社會信息化程度的高低已經(jīng)成為衡量一個國家綜合國力水平的重要標志之一。而政府機關(guān)為適應網(wǎng)絡信息社會的要求,更好地為國民經(jīng)濟和社會發(fā)展服務,更需要加強各部門之間信息資源的共享,實現(xiàn)聯(lián)合辦公,提高行政效率,降低行政成本,加速信息的傳播,提高信息的使用價值[1]。這樣對電子政務信息系統(tǒng)中數(shù)據(jù)的傳輸效率提出了新的要求。
本文對XML和JSON進行了分析比較,提出了在AJAX環(huán)境中基于JSON的輕量級數(shù)據(jù)交換模式,對于提高政府部門辦公效率有著重要的意義。
2 AJAX簡介
AJAX是異步JS和XML的簡稱,是一種是用客戶端腳本并能與Web服務器交互的客戶端Web開發(fā)技術(shù)。其特點在于AJAX是基于客戶端的,并能夠以異步的方式與服務器交互。
3 從XML到JSON
3.1 XML的局限性
XML——可擴展標記語言。它是一種格
式統(tǒng)一,跨平臺的語言。在數(shù)據(jù)傳送過程中,XML始終保留了諸如父/子關(guān)系這樣的數(shù)據(jù)結(jié)構(gòu)。幾個應用程序可以共享和解析同一個XML文件,不必使用傳統(tǒng)的字符串解析或拆解過程[2]。因此在傳統(tǒng)WEB應用程序中,使用XML已經(jīng)有效地成為客戶端與服務器之間數(shù)據(jù)交換的負載格式。隨著WEB2.0的發(fā)展,AJAX技術(shù)逐漸興起,在其構(gòu)建的WEB程序中,XML的應用具有很大的局限性。
由于AJAX在瀏覽器與WEB服務器之間使用異步數(shù)據(jù)傳輸HTTP請求以達到使網(wǎng)頁從服務器請求少量的信息,在不重載整個頁面的情況下與WEB服務器交換數(shù)據(jù),因此AJAX程序中的更新和導航序列是在客戶端/服務器環(huán)境之外完成的。信息被瀏覽器接收到后,需要整合到HTML頁面的整體布局中,這個局部刷新過程不易消耗時間過久,否則會導致用戶體驗下降。盡管腳本語言和插件支持已使大多數(shù)主流瀏覽器的功能得到了強化,但許多編程任務依然難于開展[3],這是因為將XML作為信息交換的載體,處理操縱文本時通常是使用DOM來實現(xiàn)的。
在客戶端接收從服務器傳輸過來的信息代碼時,首先需要對服務器代碼進行解析。如果服務器代碼是用XML編碼的,就必須調(diào)用XML解析器,通常使用DOM解析內(nèi)容。使用DOM時,將把所有的XML文檔信息都存于內(nèi)存中。在信息量不是很大的時候,使用XML作為信息載體并無不妥。但隨著信息量的增多,DOM對XML的解析會出現(xiàn)明顯的復雜性,主要源于其基于函數(shù)的根,這使得對數(shù)據(jù)樹的簡單訪問和修改都需要進行無數(shù)次的方法調(diào)用,使用DOM進行解析時,為文檔的每個element、attribute和comment都創(chuàng)建一個對象,這樣在DOM機制中所運用大量對象的創(chuàng)建和銷毀,都導致其解析速度慢,效率低下。此外,DOM解析內(nèi)存占用量過高,對大信息量文件來說幾乎是不可承受的。況且,DOM在各個瀏覽器中的實現(xiàn)細節(jié)不盡相同,編程模式極為復雜,跨瀏覽器兼容性出現(xiàn)問題的可能性極大[3]。因此,需要一種更為直觀的數(shù)據(jù)封裝格式,直接采用面向?qū)ο蟮恼Z法來解析服務器數(shù)據(jù)?;贘SON的數(shù)據(jù)交換方式解決了這一問題。
3.2 JSON解決方案
JSON是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,也易于機器解析和生成。它是基于純文本的數(shù)據(jù)格式,可以被用來傳輸簡單的諸如String,Number,Boolean等,也可以傳輸數(shù)組或者復雜的Object對象。JSON對象是一系列以逗號分隔的名稱/值對(name:value),最外面用一對花括號括起來。由此帶來的簡潔性是XML無法比擬的,在數(shù)據(jù)傳輸時,減少的數(shù)據(jù)量可以帶來性能上的提升,這是JSON的第一個優(yōu)點。當JS解析和處理JSON時,就突出了其第二個優(yōu)點。將JSON裝載到內(nèi)存時,只需一個eval()調(diào)用。裝載后,就可以通過名稱直接訪問任何字段了。相對于DOM,極大地提高了效率。
下面針對XML和JSON的解析過程進行對比。
一個XML文件:
如果要使用JS解析XML就需要使用DOM并編寫JS代碼將文本變?yōu)橐粋€JS對象。代碼如下:
if (window.ActiveXObject) {
xmlDoc = new ActiveXObject(''Microsoft.XMLDOM'');
xmlDoc.async = false;
xmlDoc.loadXML(xmlString);
}
這是一個JSON對象:{"city":"Chengdu","province":"Sichuan","coun":"China"}。
裝載JSON并調(diào)用字段,
var json= {"city":"Chengdu","pro":"Sichuan","coun":"China"};
var result=eval(‘(‘+json+));
alert(result.city);
這樣就可以通過JavaScript直接對JSON字符串進行解析并獲取對象信息了。
在AJAX應用中,JSON除了大幅提高解析速度以外,在以下方面也發(fā)揮了獨特的優(yōu)勢地位:
(1)數(shù)據(jù)類型。
XML本身沒有數(shù)據(jù)類型概念,它通過Schema來定義數(shù)據(jù)類型。而JSON則提供數(shù)據(jù)類型的支持,并通過使用對象和數(shù)組可以表現(xiàn)結(jié)構(gòu)化數(shù)據(jù)。
(2)表示數(shù)組。
在XML中,需要許多開始標記和結(jié)束標記,數(shù)組形式通常被表示為一個父元素包含數(shù)個相同的子元素。而JSON對數(shù)組是原生支持的。
(3)占用空間大小。
從表現(xiàn)形式來看,XML很明顯代碼臃腫,這主要源于XML的特性,每個元素必須要有開始和結(jié)束標簽。而JSON更加簡潔明了,相同的信息用JSON來表示可以節(jié)省更大的空間使用。在互聯(lián)網(wǎng)應用中,對于相同的信息量在相同帶寬環(huán)境下,JSON會以更小的體積更快速地發(fā)送。
4 結(jié)語
在AJAX構(gòu)建的電子政務信息系統(tǒng)中,使用XML作為數(shù)據(jù)傳送的載體尤其局限性,JSON作為輕量級的數(shù)據(jù)交換格式,在AJAX應用中優(yōu)勢明顯。本文從多角度對二者進行了比較和區(qū)別,使用JSON作為數(shù)據(jù)交換的載體,可以提高系統(tǒng)響應速度,降低等待時間,對于提高系統(tǒng)資源利用率有著很大的貢獻價值。
參考文獻
[1] 李昕.電子政務信息資源共享的保障研究.江西圖書館學刊,2009.
[2] 胡千里.比較XML與JSON在Web中的應用.信息技術(shù).
[3] 胡曉鋒.JSON與XML在網(wǎng)絡數(shù)據(jù)傳輸中的應用分析.