WebSocket-API

API –定義

API(Application Program Interfaceの略)は、ソフトウェアアプリケーションを構築するためのルーチン、プロトコル、およびツールのセットです。

いくつかの重要な機能は次のとおりです。

  • APIは、ソフトウェアコンポーネントがどのように相互作用するかを指定し、グラフィカルユーザーインターフェイス(GUI)コンポーネントをプログラミングするときにAPIを使用する必要があります。

  • 優れたAPIは、すべての構成要素を提供することにより、プログラムの開発を容易にします。

  • 通常HTTP上で実行されるRESTは、モバイルアプリケーション、ソーシャルWebサイト、マッシュアップツール、および自動化されたビジネスプロセスでよく使用されます。

  • RESTスタイルは、限られた数の操作(動詞)を持つことによって、クライアントとサービス間の相互作用が強化されることを強調しています。

  • 柔軟性は、リソースを割り当てることによって提供されます。独自のUniversalResource Identifier(URI)。

  • 各動詞には特定の意味(GET、POST、PUT、およびDELETE)があるため、RESTはあいまいさを回避します。

WebSocketの利点

Web Socketは、REST、または一般的なHTTPに関するいくつかの問題を解決します-

双方向

HTTPは、クライアントが常に要求を開始する単方向プロトコルです。サーバーは応答を処理して返し、クライアントはそれを消費します。Web Socketは、要求/応答などの事前定義されたメッセージパターンがない双方向プロトコルです。クライアントまたはサーバーのいずれかが相手にメッセージを送信できます。

全二重

HTTPを使用すると、要求メッセージがクライアントからサーバーに送信され、サーバーが応答メッセージをクライアントに送信します。ある時点で、クライアントがサーバーと通信しているか、サーバーがクライアントと通信しています。Web Socketを使用すると、クライアントとサーバーは互いに独立して通信できます。

単一のTCP接続

通常、新しいTCP接続はHTTP要求に対して開始され、応答の受信後に終了します。別のHTTP要求/応答のために、新しいTCP接続を確立する必要があります。Web Socketの場合、HTTP接続は標準のHTTPアップグレードメカニズムを使用してアップグレードされ、クライアントとサーバーはWebSocket接続のライフサイクルの間同じTCP接続を介して通信します。

以下のグラフは、一定のペイロードサイズでN個のメッセージを処理するのにかかる時間(ミリ秒単位)を示しています。

これがこのグラフを提供する生データです-

上記のグラフと表は、RESTオーバーヘッドがメッセージの数とともに増加することを示しています。これは、多くのTCP接続を開始および終了する必要があり、多くのHTTPヘッダーを送受信する必要があるためです。

最後の列は、REST要求を満たすための時間の乗算係数を特に示しています。

2番目のグラフは、ペイロードサイズを変更して、固定数のメッセージを処理するのにかかる時間を示しています。

これがこのグラフを提供する生データです-

このグラフは、RESTエンドポイントの要求/応答を処理するための増分コストが最小限であり、ほとんどの時間が接続の開始/終了とHTTPセマンティクスの尊重に費やされていることを示しています。

結論

WebSocketは低レベルのプロトコルです。単純な要求/応答のデザインパターン、必要なリソースの作成/更新/削除の方法、その上に構築されるステータスコードなどを含むすべて。これらはすべてHTTP用に明確に定義されています。

Web Socketはステートフルプロトコルですが、HTTPはステートレスプロトコルです。Web Socket接続は単一のサーバーで垂直方向に拡張できますが、HTTPは水平方向に拡張できます。Web Socketの水平スケーリングには独自のソリューションがいくつかありますが、それらは標準に基づいていません。HTTPには、キャッシング、ルーティング、多重化など、他にも多くの機能があります。これらはすべて、WebSocketの上で定義する必要があります。