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