WebSocket - API



API – 定義

API,是 Application Program Interface 的縮寫,是一套用於構建軟體應用程式的例程、協議和工具。

一些重要的特性包括:

  • API 指定了軟體元件如何互動,並且在程式設計圖形使用者介面 (GUI) 元件時應該使用 API。

  • 一個好的 API 透過提供所有構建塊來簡化程式開發。

  • REST,通常執行在 HTTP 之上,常用於移動應用程式、社交網站、Mashup 工具和自動化業務流程。

  • REST 風格強調透過使用有限數量的操作(動詞)來增強客戶端和服務之間的互動。

  • 透過為資源分配其自己的唯一通用資源識別符號 (URI) 來提供靈活性。

  • REST 避免歧義,因為每個動詞都有特定的含義(GET、POST、PUT 和 DELETE)

WebSocket 的優勢

WebSocket 解決了一些 REST 或 HTTP 的問題:

雙向通訊

HTTP 是一種單向協議,客戶端始終發起請求。伺服器處理並返回響應,然後客戶端使用它。WebSocket 是一種雙向協議,其中沒有預定義的訊息模式,例如請求/響應。客戶端或伺服器都可以向對方傳送訊息。

全雙工

HTTP 允許請求訊息從客戶端傳送到伺服器,然後伺服器將響應訊息傳送回客戶端。在任何給定時間,要麼客戶端正在與伺服器通訊,要麼伺服器正在與客戶端通訊。WebSocket 允許客戶端和伺服器彼此獨立地通訊。

單個 TCP 連線

通常,為 HTTP 請求啟動新的 TCP 連線,並在收到響應後終止。需要為另一個 HTTP 請求/響應建立新的 TCP 連線。對於 WebSocket,使用標準的 HTTP 升級機制升級 HTTP 連線,並且客戶端和伺服器在 WebSocket 連線的生命週期內透過相同的 TCP 連線進行通訊。

下圖顯示了處理 N 條訊息(對於恆定的有效負載大小)所花費的時間(以毫秒為單位)。

Single Connection

以下是提供此圖的原始資料:

Constant Payload

上圖和表顯示 REST 開銷隨著訊息數量的增加而增加。這是因為需要啟動和終止許多 TCP 連線,並且需要傳送和接收許多 HTTP 標頭。

最後一列特別顯示了滿足 REST 請求所需時間的乘法因子。

第二個圖表顯示了透過改變有效負載大小來處理固定數量的訊息所花費的時間。

Websockets Rest

以下是提供此圖的原始資料:

Constant Number

此圖顯示,處理 REST 端點請求/響應的增量成本很小,並且大部分時間都花在了連線啟動/終止和遵守 HTTP 語義上。

結論

WebSocket 是一種低階協議。所有內容,包括簡單的請求/響應設計模式,如何建立/更新/刪除資源需求、狀態程式碼等,都需要在其之上構建。所有這些對於 HTTP 都是明確定義的。

WebSocket 是一種有狀態協議,而 HTTP 是一種無狀態協議。WebSocket 連線可以在單個伺服器上垂直擴充套件,而 HTTP 可以水平擴充套件。WebSocket 水平擴充套件有一些專有解決方案,但它們不是基於標準的。HTTP 附帶了許多其他優點,例如快取、路由和多路複用。所有這些都需要在 WebSocket 之上定義。

廣告

© . All rights reserved.