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の上で定義する必要があります。