相同點:HTTP、MQTT、Websocket均為OSI 7層模型的【應用層協議】,http ,webSocket 為 應用層協議,MQTT為 TCP/IP 層協議。
注意. WebService並非通信協議,而是一種遠程接口調用(RPC)的框架技術。
不同點:如下
MQTT
MQTT協議是為大量計算能力有限,且工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:
使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合;
對負載內容屏蔽的消息傳輸;
使用 TCP/IP 提供網絡連接;
有三種消息發布服務質量:
“至多一次”,消息發布完全依賴底層 TCP/IP 網絡。會發生消息丟失或重復。這一級別可用於如下情況,環境傳感器數據,丟失一次讀記錄無所謂,因為不久后還會有第二次發送。
“至少一次”,確保消息到達,但消息重復可能會發生。
“只有一次”,確保消息到達一次。這一級別可用於如下情況,在計費系統中,消息重復或丟失會導致不正確的結果。
MQTT協議的實現方式
實現 MQTT 協議需要:客戶端和服務器端
MQTT 協議中有三種身份:發布者 (Publish)、代理 (Broker)(服務器)、訂閱者 (Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者。
MQTT 傳輸的消息分為:主題 (Topic) 和負載 (payload) 兩部分
Topic,可以理解為消息的類型,訂閱者訂閱 (Subscribe) 后,就會收到該主題的消息內容(payload)
payload,可以理解為消息的內容,是指訂閱者具體要使用的內容
MQTT 協議一般適用於設備數據采集到端 (Device-》Server,Device-》Gateway),集中星型網絡架構 (hub-and-spoke),不適用設備與設備之間通信,設備控制能力弱,另外實時性較差,一般都在秒級。
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
原文鏈接https://blog.csdn.net/wzhqazcscs/article/details/79603261