1. 程式人生 > >HTTP、MQTT、Websocket、WebService有什麼區別

HTTP、MQTT、Websocket、WebService有什麼區別

  • 相同點:HTTP、MQTT、Websocket均為OSI 7層模型的【應用層協議】
    注意. WebService並非通訊協議,而是一種遠端介面呼叫(RPC)的框架技術。
  • 不同點:如下

MQTT

MQTT協議是為大量計算能力有限,且工作在低頻寬、不可靠的網路的遠端感測器和控制裝置通訊而設計的協議,它具有以下主要的幾項特性:

  1. 使用釋出/訂閱訊息模式,提供一對多的訊息釋出,解除應用程式耦合;
  2. 對負載內容遮蔽的訊息傳輸;
  3. 使用 TCP/IP 提供網路連線;
  4. 有三種訊息釋出服務質量:
    1. “至多一次”,訊息釋出完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。
    2. “至少一次”,確保訊息到達,但訊息重複可能會發生。
    3. “只有一次”,確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。

HTTP

HTTP是一個屬於應用層的,基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。

通訊方式

  • 瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送請求。Web伺服器根據接收到的請求後,向客戶端傳送響應資訊
  • HTTP之請求訊息Request:請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成。
  • HTTP之響應訊息Response:HTTP響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。
  • 若connection 模式為close,則伺服器會主動關閉TCP連線,客戶端被動關閉連線,釋放TCP連線;若connection 模式為keepalive,則該連線會保持一段時間,在該時間內可以繼續接收請求;

不足:

  • HTTP通訊方式問題,HTTP的請求/應答方式的會話都是客戶端發起的,缺乏伺服器通知客戶端的機制,在需要通知的場景,如聊天室,遊戲,客戶端應用需要不斷地輪詢伺服器。

Websocket協議(非socket)

  • WebSocket協議是基於TCP的一種應用層網路協議。它實現了瀏覽器與伺服器全雙工(full-duplex)通訊——允許伺服器主動傳送資訊給客戶端。
  • 取代了網頁和伺服器採用HTTP輪詢進行雙向通訊的機制。

WebService:RPC框架的一種

XML+XSD,SOAP和WSDL就是構成WebService平臺的三大技術。
1)XML+XSD
1.1)WebService採用HTTP協議傳輸資料,採用XML格式封裝資料(即XML中說明呼叫遠端服務物件的哪個方法,傳遞的引數是什麼,以及服務物件的 返回結果是什麼)。XML是WebService平臺中表示資料的格式。除了易於建立和易於分析外,XML主要的優點在於它既是平臺無關的,又是廠商無關 的。無關性是比技術優越性更重要的:軟體廠商是不會選擇一個由競爭對手所發明的技術的。
1.2)XML解決了資料表示的問題,但它沒有定義一套標準的資料型別,更沒有說怎麼去擴充套件這套資料型別。例如,整形數到底代表什麼?16位,32位,64位?這 些細節對實現互操作性很重要。XML Schema(XSD)就是專門解決這個問題的一套標準。它定義了一套標準的資料型別,並給出了一種語言來擴充套件這套資料型別。WebService平臺就 是用XSD來作為其資料型別系統的。當你用某種語言(如VB.NET或C#)來構造一個Web service時,為了符合WebService標準,所 有你使用的資料型別都必須被轉換為XSD型別。你用的工具可能已經自動幫你完成了這個轉換,但你很可能會根據你的需要修改一下轉換過程。
2)SOAP
2.1) WebService通過HTTP協議傳送請求和接收結果時,傳送的請求內容和結果內容都採用XML格式封裝,並增加了一些特定的HTTP訊息頭,以說明 HTTP訊息的內容格式,這些特定的HTTP訊息頭和XML內容格式就是SOAP協議。SOAP提供了標準的RPC方法來呼叫Web Service。
2.2)SOAP協議 = HTTP協議 + XML資料格式
SOAP協議定義了SOAP訊息的格式,SOAP協議是基於HTTP協議的,SOAP也是基於XML和XSD的,XML是SOAP的資料編碼方式。打個比 喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護欄,SOAP就是普通公路經過加隔離帶和防護欄改造過的高速公路。
3)WSDL