web-dev-qa-db-ja.com

REST API、req / respおよびpub / sub要件を使用)の設計

今日、私は分散システム用のRESTインターフェースを設計しています。これはクライアント/サーバーアーキテクチャですが、2つのメッセージ交換パターンがあります。

  • req/resp:最もRESTfulなアプローチであり、サーバー内のオブジェクトにアクセス/作成/変更/削除するためのCRUDインターフェイスになります。
  • pub/subs:これが私の主な疑問です。サーバーが非同期通知をクライアントにできるだけ早く送信する必要があります。

Webで検索すると、サーバーとクライアントにRESTサーバーを実装することが1つの解決策であることがわかりました。 REST-HTTP Simple Protocol Webサービスアーキテクチャをパブリッシュ/サブスクライブしますか?

もう1つの方法は、blocking-RESTを実装することです。これにより、クライアントは特定のポートでリッスンする必要がなくなります。 ブロッキングの使用RESTパブリッシュ/サブスクライブの実装要求

このようなインターフェースを実装するために、どのオプションを検討しますか。ありがとう!

11
chrpinedo

Web Sockets Webクライアントをライブで更新するサービスのチャネルを提供できます。 http long polling のような他のテクニックがあります。クライアントは(あなたが言及したように)「ブロッキング」リクエストを行い、サービスはタイムアウト(たとえば50秒)未満の期間リクエストを保持します。データがある場合に応答を書き込みます。 Webクライアントはすぐに別の要求を発行します。このループは、メッセージをサーバーからクライアントに「送信」できるが、クライアント(ファイアウォール、プロキシなど)から開始される連続チャネルを作成します。

socket.iosignalR などのライブラリがあり、このロジックをラップし、WebSocketからロングポーリングにフォールバックして、詳細を抽象化します。

理解するために、サンプルのWebソケットと 長いポーリングの例 を作成することをお勧めしますが、それを正しく行うには、上記のようなライブラリに依存します。

3
bryanmac