JSON為王,為什么XML會(huì)慢慢淡出人們的視野
目前全球信息基礎(chǔ)設(shè)施的特點(diǎn)是,擁有大量的數(shù)據(jù)交換格式。這一點(diǎn)也不奇怪?;ヂ?lián)網(wǎng)幾乎已經(jīng)老了,而“物聯(lián)網(wǎng)”及“大數(shù)據(jù)”正從概念走進(jìn)現(xiàn)實(shí)。但我仍然相信,在這一領(lǐng)域還有一股較強(qiáng)的歷史趨勢(shì),推動(dòng)JSON數(shù)據(jù)格式的應(yīng)用。
十 年前,XML是主要的數(shù)據(jù)交換格式。它的出現(xiàn),尤如一股清新的空氣,以及令人驚喜的SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言),是一個(gè)巨大的進(jìn)步。它使人們能夠做到以 前想都不敢想的事情,比如通過HTTP連接交換微軟Office文檔,你的周圍布滿XML文檔,你很容易忽略這把“互聯(lián)網(wǎng)瑞士軍刀”的重要性。
這 已經(jīng)不是什么秘密了,但在過去的幾年里,在數(shù)據(jù)交換的世界,一個(gè)大膽的改造已經(jīng)開始。更輕巧,更省帶寬的,密集型的JSON(JavaScript對(duì)象標(biāo) 記),已不僅僅成為XML的另外一套可選技術(shù),而是可能成為一個(gè)潛在的完全成熟的接班人?,F(xiàn)在各種各樣的力量匯聚在一起,讓XML的使用越來越少,并視 JSON作為未來的全球數(shù)字架構(gòu)的首選格式。我認(rèn)為,唯一的問題是這個(gè)時(shí)刻何時(shí)到來。
我堅(jiān)信,這種轉(zhuǎn)變可以歸因于四大趨勢(shì),我將依次討論:
不管你喜歡與否,今天的網(wǎng)絡(luò)環(huán)境在很多重要方面仍然嚴(yán)重孤立。有大量你將永遠(yuǎn)接觸不到的信息在那里(如身份驗(yàn)證信息,應(yīng)該被加密)。但像eBay這樣的公司開始走向開放,API已經(jīng)作為一種通用的力量。
這里有一些例子,像Twitter, Facebook和LinkedIn和其他無數(shù)的機(jī)構(gòu) a)基于信息服務(wù)來交換數(shù)據(jù) (b 對(duì)開放各種各樣的信息給第三方越來越有興趣。大量的數(shù)據(jù)永遠(yuǎn)看不到出頭之日(因?yàn)樗麄兪枪铝⒌模? 。現(xiàn)在我只想說,這些API是一股不可忽視的力量,并改變著這個(gè)空間,在網(wǎng)絡(luò)上留下他們的標(biāo)記。
這里很多原始數(shù)據(jù)仍然使用XML而不是JSON,像可編程Web和其他數(shù)據(jù)表明,XML仍然是API的主要數(shù)據(jù)格式,但是“大JSON”正在快速上升。 Twitter的API大約兩年前開始就只支持JSON了。Foursquare也跟進(jìn)了。
Scott Gilbertson大致同意我的判斷: “當(dāng)涉及到數(shù)據(jù)API服務(wù)時(shí), XML仍然是最常用的格式,但JSON是的增長(zhǎng)更快。盡管還有很多XML格式的API,但最近的API ,越來越傾向于使用JSON格式。這樣的例子還有很多…… 企業(yè)正在迅速?gòu)腦ML遷移到JSON”。 Scott一年多前就發(fā)表了他的觀點(diǎn),但沒有什么跡象表明他的觀點(diǎn)有任何變化。
簡(jiǎn)而言之:APIs 已經(jīng)不再是一個(gè)很酷的事情或Web的附屬物,用Gilbertson的話來說,是“互聯(lián)網(wǎng)上的一等公民”。最重要的是,REST正在替代SOAP作為數(shù)據(jù) 傳輸協(xié)議。XML跟REST不太兼容,當(dāng)然,如果SOAP使用率急劇下降,那么XML的使用量將與它一起萎縮。
2. 大數(shù)據(jù)
JSON 的崛起在數(shù)據(jù)庫(kù)方面也扮演著關(guān)鍵角色,這是另一個(gè)對(duì)XML不好的預(yù)兆。其實(shí)大數(shù)據(jù)本身并沒有首選的數(shù)據(jù)交換格式。不過,對(duì)于大數(shù)據(jù)來說JSON可能更特殊 一點(diǎn)。JSON是一種新興的以網(wǎng)絡(luò)為中心,所謂的“NoSQL”數(shù)據(jù)庫(kù)的首選格式。這是因?yàn)椋篴)JSON適應(yīng)大規(guī)??蓴U(kuò)展性的數(shù)據(jù)庫(kù); b)天生就是為了無關(guān)系數(shù)據(jù)而設(shè)計(jì)的; c))面向Web是他們的核心;
這是有很多知名的例子,像MongoDB,CouchDB,和Riak。這三種數(shù)據(jù)庫(kù)都基于JSON,橫向可擴(kuò)展,由Web驅(qū)動(dòng)。
其他的例子比比皆是:亞馬遜DynamoDB的架構(gòu)是完全基于REST/JSON的。 Neo4j,圖形數(shù)據(jù)庫(kù),有一個(gè)REST/JSON API,沒有對(duì)應(yīng)XML的支持。 HBase的的REST架構(gòu)目前支持XML,但這種支持正走在被廢棄的路上。
一 段時(shí)間以來,通過各種手段查詢MySQL,并得到JSON的返回結(jié)果,這一直是可能的。(有很多方法可以做到這一點(diǎn),但MySQL 4.1中的JSON格式的命令無疑是最方便的)。這同樣適用于Postgres的和其他柱狀數(shù)據(jù)庫(kù)。但除了MySQL和Postgres,還沒有其他數(shù)據(jù) 庫(kù)將JSON作為基石。
Postgres將很快發(fā)生變化。在9.2版本中, Postgres將支持JSON數(shù)據(jù)類型,這將“允許存儲(chǔ)基于文檔的數(shù)據(jù)庫(kù),可存儲(chǔ)JSON文檔,或?qū)?shù)組和行數(shù)據(jù)轉(zhuǎn)換成JSON ”。盡管Postgres支持XML數(shù)據(jù)類型有一段時(shí)間了,這種變化令我對(duì)JSON的重要性日益增加,增加了一個(gè)微妙的確認(rèn)。
還有一些數(shù)據(jù)庫(kù)是基于XML的(如MarkLogic),但是還沒有任何類似迅速采用基于JSON存儲(chǔ)之類的動(dòng)靜。
3. 物聯(lián)網(wǎng)
在這一領(lǐng)域的運(yùn)動(dòng)比我所提到的其他領(lǐng)域?qū)じy以辨別。物聯(lián)網(wǎng)仍然是一個(gè)概念,但這是特別強(qiáng)大的一個(gè)。它還未實(shí)現(xiàn),還未被證明可行,以及首選的數(shù)據(jù)格式?;ヂ?lián)網(wǎng)基本上是一大堆電腦連接一直的小事。
但 值得一提的是,JSON開始已經(jīng)在這一領(lǐng)域建立立足點(diǎn)。有人使用JSON在Arduino上建了一個(gè)庫(kù)。在“物聯(lián)網(wǎng)架構(gòu)設(shè)計(jì)”(第102頁(yè))一書中,有人 認(rèn)為:“JSON可以更好地適應(yīng)[比XML]智能設(shè)備上的功能。此外,它可以被解析成JavaScript對(duì)象。這使得它成為集成到網(wǎng)頁(yè)中的理想人選。 “你可以基于JSON構(gòu)造LED壓力表。你的下一個(gè)溫控器可能也會(huì)基于JSON運(yùn)行。
我們還沒有到那個(gè)時(shí)侯,幾乎感覺不到的JSON關(guān)聯(lián)著你周圍的一切。誰知道呢?
4. 全棧(全端)JavaScript
除了上面提到的三股力量,還有一個(gè)更值得地提到:JavaScript是一種辣味十足且有可能不會(huì)很快改變的技術(shù)。node.js已經(jīng)逐漸成為主流,圍繞它 周圍的狂熱社區(qū)在快速地產(chǎn)生,新的客戶端JavaScript庫(kù)每一天都在增加,JavaScript已經(jīng)在網(wǎng)絡(luò)上廣泛使用,在web開發(fā)世界,參與這個(gè) 不斷增長(zhǎng)的分支的人們,應(yīng)該更喜歡JSON,這僅僅是輕描淡寫的一筆。 當(dāng)然,也有基于node的XML解析器,但它主要是處理遺留的基于XML的服務(wù)。事實(shí)是,如果你正在從上往下做全棧式的JavaScript,使用JSON之外的東西是愚蠢的。因?yàn)槿珬5腏avaScript已經(jīng)成為主流。
這樣或那樣,前途光明的JSON
如果上述與JSON本身無關(guān),這將是很另人吃驚的。許多人認(rèn)為,JSON更好,因?yàn)樗幌馲ML那么“詳細(xì)”,并且比起純二進(jìn)制更容易被人們理解。
這些因素都對(duì)JSON有一定的幫助,但我們的開發(fā)人員Matthew Lyon有一個(gè)更為令人信服的理由。他認(rèn)為JSON的崛起,是因?yàn)镴SON只處理了非常有限的數(shù)據(jù)類型。它本質(zhì)上限制為null, Booleans, numerics, strings, arrays,和 dictionaries。它甚至沒有一個(gè)日期數(shù)據(jù)類型。JSON就是這樣,不僅沒有一般XML的冗長(zhǎng):它僅是在使用本身的數(shù)據(jù)類型。它本身的原始數(shù)據(jù)類 型的更簡(jiǎn)潔,使JSON更深刻,并可以立即與之互操作。
總的來說,我的說法并不是真的如此大膽,因 為似乎已經(jīng)顯而易見了。它主要由兩部分組成:(1)為了全球的數(shù)字基礎(chǔ)設(shè)施,需要有無孔不入的數(shù)據(jù)交換格式,像針線一樣將一切融合在一起,建立高清晰度的 節(jié)點(diǎn);(2)有充分理由認(rèn)為,JSON總有一天會(huì)在我們的數(shù)字世界中建立霸主地位。我們應(yīng)該期望適應(yīng)這一變化,并相應(yīng)地調(diào)整。
原文鏈接:http://www.linkedin.com/pub/dr-luc-perkins/22/7b3/a08?utm_source=ourjs.com
譯文鏈接:http://ourjs.com/detail/5310bbf992b2049526000016