JSON為王 為什麼XML會慢慢淡出人們的視野

ourjs發表於2014-03-03

  目前全球資訊基礎設施的特點是,擁有大量的資料交換格式。這一點也不奇怪。網際網路幾乎已經老了,而“物聯網”及“大資料”正從概念走進現實。但我仍然相信,在這一領域還有一股較強的歷史趨勢,推動JSON資料格式的應用。

  十年前,XML是主要的資料交換格式。它的出現,尤如一股清新的空氣,以及令人驚喜的SGML(標準通用標記語言),是一個巨大的進步。它使人們能夠做到以前想都不敢想的事情,比如通過HTTP連線交換微軟Office文件,你的周圍佈滿XML文件,你很容易忽略這把“網際網路瑞士軍刀”的重要性。

  這已經不是什麼祕密了,但在過去的幾年裡,在資料交換的世界,一個大膽的改造已經開始。更輕巧,更省頻寬的,密集型的JSON(JavaScript物件標記),已不僅僅成為XML的另外一套可選技術,而是可能成為一個潛在的完全成熟的接班人。現在各種各樣的力量匯聚在一起,讓XML的使用越來越少,並視JSON作為未來的全球數字架構的首選格式。我認為,唯一的問題是這個時刻何時到來。

  我堅信,這種轉變可以歸因於四大趨勢,我將依次討論:

  1. APIs

  不管你喜歡與否,今天的網路環境在很多重要方面仍然嚴重孤立。有大量你將永遠接觸不到的資訊在那裡(如身份驗證資訊,應該被加密)。但像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總有一天會在我們的數字世界中建立霸主地位。我們應該期望適應這一變化,並相應地調整。 

  原文 linkedin.com

相關文章