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