Websockets-api
WebSockets-API
API –定義
APIは、Application Program Interfaceの略で、ソフトウェアアプリケーションを構築するための一連のルーチン、プロトコル、およびツールです。
いくつかの重要な機能は-
- APIは、グラフィカルユーザーインターフェイス(GUI)コンポーネントをプログラミングするときに、ソフトウェアコンポーネントがどのように相互作用し、APIを使用するかを指定します。
- 優れたAPIは、すべての構成要素を提供することにより、プログラムの開発を容易にします。
- 通常HTTPで実行されるRESTは、モバイルアプリケーション、ソーシャルWebサイト、マッシュアップツール、および自動化されたビジネスプロセスでよく使用されます。
- RESTスタイルは、限られた数の操作(動詞)を持つことにより、クライアントとサービス間の対話が強化されることを強調しています。
- リソースを割り当てることで柔軟性が提供されます。独自の一意のユニバーサルリソース識別子(URI)。
- 各動詞には特定の意味(GET、POST、PUT、およびDELETE)があるため、RESTはあいまいさを回避します。
Web Socketの利点
Web Socketは、RESTまたはHTTP全般に関するいくつかの問題を解決します-
双方向
HTTPは、クライアントが常に要求を開始する単方向プロトコルです。 サーバーは応答を処理して返し、クライアントはそれを消費します。 Web Socketは、要求/応答などの事前定義されたメッセージパターンがない双方向プロトコルです。 クライアントまたはサーバーは、相手にメッセージを送信できます。
全二重
HTTPでは、要求メッセージがクライアントからサーバーに送られ、サーバーがクライアントに応答メッセージを送信します。 所定の時間に、クライアントがサーバーと通信するか、サーバーがクライアントと通信します。 Web Socketを使用すると、クライアントとサーバーは互いに独立して通信できます。
単一のTCP接続
通常、HTTP要求に対して新しいTCP接続が開始され、応答が受信された後に終了します。 別のHTTP要求/応答のために、新しいTCP接続を確立する必要があります。 Webソケットの場合、HTTP接続は標準のHTTPアップグレードメカニズムを使用してアップグレードされ、クライアントとサーバーはWebソケット接続のライフサイクルで同じTCP接続を介して通信します。
以下のグラフは、一定のペイロードサイズでN個のメッセージを処理するのにかかった時間(ミリ秒単位)を示しています。
これはこのグラフをフィードする生データです-
上記のグラフと表は、メッセージの数とともにRESTオーバーヘッドが増加することを示しています。 これは、多くのTCP接続を開始および終了する必要があり、多くのHTTPヘッダーを送受信する必要があるためです。
最後の列は、特に、REST要求を実行するための時間の乗算係数を示しています。
2番目のグラフは、ペイロードサイズを変更することにより、一定数のメッセージを処理するのにかかる時間を示しています。
これはこのグラフをフィードする生データです-
このグラフは、RESTエンドポイントの要求/応答の処理の増分コストが最小であり、接続の開始/終了とHTTPセマンティクスの尊重にほとんどの時間が費やされていることを示しています。
結論
Web Socketは低レベルのプロトコルです。 単純な要求/応答設計パターン、リソースの作成/更新/削除方法、ステータスコードなど、すべて その上に構築されます。 これらはすべて、HTTPに対して明確に定義されています。
HTTPはステートレスプロトコルですが、Web Socketはステートフルプロトコルです。 HTTPが水平方向にスケーリングできるのに対し、Webソケット接続は単一サーバー上で垂直方向にスケーリングできます。 Web Socket水平スケーリングには独自のソリューションがいくつかありますが、それらは標準に基づいていません。 HTTPには、キャッシング、ルーティング、多重化などの他の多くの利点があります。 これらはすべて、Web Socketの上に定義する必要があります。