成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

未來物聯網協議:不帶JSON的REST

譯文
物聯網
本文分析了HTTP/JSON的傳統REST不適合物聯網技術的原因,并指出了新的協議發展方向。

【51CTO.com快譯】隨著各種基于Web的API被廣泛地在各種應用中所使用,業界經常會用到JSON/HTTP的REST(Representational State Transfer,表述性狀態傳遞)。如今,JSON早已取代了XML,成為了Web應用的首選數據格式。雖然早期的物聯網技術曾經采用過JSON/HTTP的組合,不過時過境遷,大家越來越感覺到JSON/HTTP的方式不太適合成為物聯網數據交換的通用規范。

[[276186]]

眾所周知,REST是一種針對統一訪問與修改資源的架構模式。一個實體(如服務器)持有某個對象當前狀態的權限。而其他實體可以請求當前對象的“表述(representation)”,并且可以發送創建、修改或刪除對象的請求。當前流行的REST模型使用URI來標識不同的對象(如“/lamp/1234”),使用HTTP verbs來為某項指定操作,并使用JSON來表示該對象。那么為了獲取一個對象,客戶端可以發送“GET /lamp/1234”的HTTP請求。服務器可以采用HTTP 200和包含JSON數據的消息體進行響應。

目前,HTTP/JSON模型已在Web API中根深蒂固,其受歡迎的程度很自然地滲透到了物聯網技術之中。Samsung、Nest和Apple都發布了依賴于JSON over HTTP的API。不過,雖然REST模型適用于構建物聯網這樣分布式的網絡,但是HTTP 1.1與JSON并不是此處的最佳選項。

JSON有什么問題?

JSON是一種基于JavaScript客戶端之間數據交互的格式,它簡化了Web應用程序。作為XML的輕量級替代品,JSON通過如下特性,成就了它在通用數據交換格式中的首選地位:

  • 它是無模式(schemaless)的,也就是說:只要JSON的格式正確,就視為有效。
  • JSON支持最簡單且直接的數據類型,其中包括:字符串、數字、布爾值、對象、數組和空值。
  • 采用JavaScript語法表示的數據不但易讀,而且易于解析。當前各種流行的編程語言基本上都能夠支持JSON解析器。

上述功能使JSON成為了通用的格式,但是目前的物聯網典型用例,則可能會讓我們懷疑JSON是否適合構成那些在智能設備環境中的嵌入式系統。物聯網設備通常需要按照如下的方式進行優化:

  • 保持網絡中流量盡快的小且快速。
  • 最小化針對網絡編/解碼的原始計算量。
  • 盡量使用少量的內存和存儲空間。

在物聯網中,設備可能需要在小于1兆字節的內存與存儲環境中運行,并且通常只能使用小功率的電池。而且出于功耗的考慮,它們可能一整天都連不上幾次Wi-Fi網絡,而每一次只能可能連接幾秒鐘。另外,就算是高端的集線器設備也不大可能擁有超過25MB的存儲空間。可見對于這些設備而言,網絡方面效率是關鍵性的問題。那么為什么說JSON不是滿足上述要求的最佳選項呢?

  • 盡管JSON聲稱具有精益(leanness)特征,但是它并不是一種節省空間的編碼方式。它的所有數據都被表示為ASCII字符串,而且還會添加大量的留白區域。它不但要求每個標簽字段都是完整的,而且必須對二進制數據進行轉義。何況JSON并無標準化此類處理的方法。
  • 數據格式的簡單性反而引入了實現上的復雜性。JSON的簡單類型很難與物聯網編程中使用的常規類型相匹配。不同于C語言那樣能夠支持廣泛的數字類型,JSON唯一支持的只有數字型。官方的JSON規范(ECMA-404)甚至都沒有定義數字字段的最大長度。這就意味著JSON使用者必須進行大量的檢查,以確定哪一種基礎類型能夠與給定的數字相配。由于兩個或多個具有相同結構、以及字段名稱的字段都可能包含不同“type”的數字,例如:字段“age”在某處可以是無符號的正整數,也可能在另一處是浮點型,因此這就增加了其自身的復雜性。
  • 由于數組可以包含任意數量的類型,而且并未約束具體如何去使用某個對象中的字段,因此開發人員只能依靠約定,來確定JSON結構會包含具體哪些數據。
  • 由于在字段基本上是無序的(除了數組),因此存在著解釋JSON數據結構的問題。如上所述,就算是有效的JSON也可能包含了無效且無序的數據,因此那些能夠高效處理字段的策略,可能并不適用于JSON。實際上,這就意味著程序需要解析整個對象的結果,存放到本就有限的內存之中。

既然JSON并非數據編碼的最佳技術,那么作為實現REST的另一半--HTTP 1.1又處于何種境地呢?

HTTP又有什么問題?

HTTP 1.1雖然為Web開發人員提供了靈活且直接的實施基礎,但是多年來一直困擾Web開發人員的各種HTTP錯誤,也可能會對物聯網的開發產生更大的影響。

  • 由于直接將未經任何類型壓縮的純文本字符串作為HTTP的頭部(header),因此HTTP被視為一種臃腫的網絡協議。
  • 最初的HTTP規范是圍繞著短平快的網絡連接而設計的,即:客戶端點開一個鏈接,瀏覽器請求該頁面,服務器提供之,然后關閉連接。但是,如今的網頁一般都需要從十幾個來源同時獲取內容。顯然,HTTP 1.1需要在較短的一段時間內保持連接的打開與重用。
  • 物聯網設備在網絡連接的建立與耗時方面代價高昂,特別是對于SSL/TLS的協議而言,它會耗費大量的計算資源。如此反復地打開重量級的網絡連接,對于物聯網設備的有限資源而言,實在消費不起。

可見在物聯網領域,從嵌入式設備發送和接收的每一個字節都可能會影響到整體的性能。一個良好的物聯網協議,不僅需要能夠讓開發人員輕松地發送正確的信息,而且還能夠減輕設備及其網絡的負載。現有的HTTP協議不但要簡化安全性、優化傳輸流量的體積,還需要通過長期的網絡連接,來復用各種請求和響應。

二進制

作為一款優秀的物聯網模型。REST能夠讓每個設備都能輕松地提供其狀態信息,并可以標準化數據的創建、讀取、更新和刪除。物聯網開發人員的目標就是要讓REST不再臃腫。

對于JSON來說,其物聯網的前景不容樂觀,目前已經出現了一系列更適合編碼的替代品,例如:

  • Apache Thrift和Google的Protocol Buffers(Protobuf),都提供了更適合受限設備的二進制編碼,而且它們都具有自動化強制模式。
  • CoAP是物聯網通信領域的新興標準,它定義了一種被稱為CBOR的編碼。CBOR具有自描述性,其編碼專注于產生體積較小的消息。
  • 令人尊敬的老牌ASN.1系列編碼也在物聯網領域獲得了新生。

所有這些都提供了比JSON更適合嵌入式設備的編碼特性。

而對于HTTP來說,則面臨著更多的競爭。例如:

  • CoAP定義了一種簡潔的類似REST的傳輸協議,它被譽為最可能替代HTTP 1.1的方案。
  • Google的SPDY(基于TCP的會話層協議)推出了HTTP/2標準,它在某種程度上證明了HTTP是完全可以“自我改造”的。具體說來,針對上述提到的網絡性能問題,HTTP/2對其頭部進行了有效編碼。該協議支持連接多路復用的多個數據流,以及服務器端的啟動推送。在改造的過程中,它將SSL/TLS保持為核心部分,通過協商來保護多個數據流,減少設置開銷,并保持高安全性。
  • 同樣是由Google SPDY推出的新興協議—QUIC,是針對UDP進行的TCP交換。通過消除TCP的各種連接管理開銷,QUIC減少了在網絡連接初建期間出現的延遲。

由于QUIC和HTTP/2都采用了類似的協議棧,因此兩者之間的競爭并非零和游戲,而是為了共同得到物聯網領域的認可與采用。

發展趨勢

綜上所述,雖然REST模型非常適合于物聯網,但是HTTP/JSON的傳統REST在速度、解析簡易性、面向字符串的有效負載傳輸、以及二進制編碼等方面與物聯網并不相配。縱觀業界,CBOR和Protobuf可以在編碼方式上替代JSON。而HTTP/2規范、及其新興的姐妹協議--QUIC,能夠有效地對HTTP起到網絡協議上的補充和加強作用。

原文標題:REST Without JSON: The Future of IoT Protocols,作者:Matt Butcher

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:趙寧寧 來源: 51CTO
相關推薦

2020-11-19 09:19:42

物聯網物聯網標準物聯網協議

2020-02-12 10:53:03

物聯網IOT物聯網技術

2023-04-19 11:01:03

物聯網IOT

2020-11-10 10:18:04

物聯網

2019-01-11 08:34:10

2020-09-30 16:33:12

物聯網數據技術

2020-03-10 22:03:02

物聯網IOT物聯網技術

2022-08-08 11:07:05

物聯網

2019-12-29 22:49:37

物聯網大數據智慧城市

2022-10-13 11:42:05

物聯網車隊管理

2019-11-05 10:29:00

物聯網IOT物聯網技術

2020-08-18 16:16:27

物聯網IOT物聯網技術

2019-06-25 08:37:20

物聯網農業IOT

2020-07-22 23:13:49

物聯網醫療監測IOT

2020-11-17 05:41:28

物聯網隱私IOT

2022-10-21 16:27:02

物聯網機動車預測性維護

2024-11-06 16:19:02

物聯網無線工業物聯網IoT

2020-01-06 10:47:48

物聯網技術算法

2024-03-26 11:52:13

2022-06-27 10:41:45

MQTT物聯網協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文日本在线 | 91久久精品国产91久久 | 四虎影院新网址 | 日韩在线中文字幕 | 久久看看 | 毛片毛片毛片毛片 | 欧美日韩一区二区电影 | 91在线精品视频 | 久久福利网站 | 超碰操| 九九热这里 | 久久精品二区亚洲w码 | 成人亚洲视频 | 一区二区三区视频在线观看 | 亚洲激情第一页 | 免费一级黄色 | 久久久久亚洲精品 | 久久精品国产亚洲一区二区三区 | 久久国 | 91亚洲精品国偷拍自产在线观看 | 色精品| 欧美二区三区 | 九九综合 | 天堂av免费观看 | 精品九九| 欧美国产亚洲一区二区 | 国产精品久久久久久婷婷天堂 | 亚洲综合久久久 | 91香蕉嫩草 | 日韩在线观看一区 | 中文字幕二区 | 日日操夜夜操天天操 | 91原创视频| 三级在线视频 | 欧美极品在线播放 | 日韩中文一区二区三区 | www国产成人免费观看视频,深夜成人网 | 午夜ww| 日日骚视频 | 国产伦一区二区三区久久 | 成人字幕网zmw |