タグ付けされた質問 「websockets」

2
従来のREST APIの代わりにSignalR(websockets)を完全に使用しない唯一の理由はパフォーマンスですか?
私は以前SignalR、いくつかのプロジェクトでリアルタイムのメッセージング機能を実現していました。確実に機能するようで、使い方を学ぶのは非常に簡単です。 少なくとも私にとっての誘惑は、Web APIサービスの開発を放棄し、SignalRすべてに使用することです。 思いやりのある設計によってこれを達成できると思います。もしそうなら、必要なクライアントコードははるかに少なくなります。さらに重要なことは、分割されたインターフェースではなく、サービスへの単一のインターフェースがあることを意味し、最悪の場合、物事がいつレンダリングされるかなどを考えずにこれを接続できることを意味します。 だから、私は知りたい: パフォーマンス以外にすべてのWebサービスの代わりにSignalRを使用しない他の理由はありますか? SignalRのパフォーマンスは、そうするのが理にかなわないということに関して十分ですか? 馬鹿げたようなことをせずに、サーバー側のオブジェクトとサービスの定義をクライアント側のサービスアクセスコードに変換できることは、長い間私の夢でしたnode.js。たとえば、興味深いオブジェクトInterestingObjectとそのオブジェクトへのサービスを定義する場合、サービスへCRUDのInterestingObjectService標準のURLルートを定義できます-"/ {serviceName} / {methodName}"-しかし、アクセスするクライアントコードを記述する必要がありますサービス。オブジェクトは、サーバーとバックにクライアントから渡されようとしているので、する実際的な理由はありません持っているがクライアント側のコードでオブジェクトを明示的に定義します。また、CRUD操作を実行するルートを明示的に定義する必要はありません。このすべてを標準化する方法があるはずだと思うので、WinFormsまたはJavaを書いている場合と同じように、サービスへのアクセスがクライアントからサーバーへ、そして透過的に戻るという仮定の下でクライアントを書くことが可能ですアプレットまたはネイティブアプリ、またはあなたが持っているもの。 SignalRが従来のWebサービスの代わりに使用するのに十分であれば、これを実現するための実行可能な方法である可能性があります。SignalRには、既に説明したサービスのようにハブを機能させる機能が既に含まれているため、この機能すべてをすぐに反映できる共通ベース(CRUD)サービスを定義できます。そうすれば、ほとんどの場合、サービスへのアクセスを許可することができ、慣習によってアクセスできるものにアクセスするためにコードを書き直す煩わしさを省くことができます。 DOM。 私の編集を読んだ後、私はそれが少し無意味であるように感じるので、私が何を得ているかについて質問があるかどうか私に尋ねてください。基本的に、サービスへのアクセスは可能な限り透過的にする必要があります。

2
リアルタイムの重いWebソケットベースのWebアプリケーションをアーキテクチャ化する方法は?
リアルタイムの単一ページアプリケーションを開発する過程で、ユーザーに最新のデータを提供するためにwebsocketを徐々に採用しています。この段階で、アプリの構造を破壊しすぎていることに気がつき、この現象の解決策を見つけることができませんでした。 詳細に入る前に、ほんの少しのコンテキスト: webappはリアルタイムSPAです。 バックエンドはRuby on Railsにあります。リアルタイムイベントはRubyによってRedisキーにプッシュされ、その後、マイクロノードサーバーがそれをプルバックしてSocket.Ioにプッシュします。 フロントエンドはAngularJSにあり、Nodeのsocket.ioサーバーに直接接続します。 サーバー側では、リアルタイムになる前に、明確なコントローラー/モデルベースのリソース分離があり、それぞれに処理が関連付けられていました。この古典的なMVCの設計は、ユーザーにWebソケットを介してプッシュを開始した直後に、完全に細断された、または少なくともバイパスされました。これで、すべてのアプリが多かれ少なかれ構造化されたデータを流す単一のパイプができました。そして、私はそれがストレスだと感じます。 フロントエンドでの主な懸念は、ビジネスロジックの重複です。ユーザーがページを読み込むとき、古典的なAJAX呼び出しを介してモデルを読み込む必要があります。しかし、リアルタイムのデータフラッディングも処理する必要があり、クライアントサイドモデルの一貫性を維持するために、クライアントサイドのビジネスロジックの多くを複製しています。 いくつかの調査の後、いくつかの特定のトピックを念頭に置いて、現代のWebアプリのアーキテクチャをどのように設計することができ、どのように設計するべきかについてのアドバイスを提供する良い投稿、記事、書籍などは見つかりません: サーバーからユーザーに送信されるデータの構造化方法 「このリソースは更新されたので、AJAX呼び出しでリロードする必要があります」などのイベントのみを送信するか、更新されたデータをプッシュし、初期AJAX呼び出しでロードされた以前のデータを置き換えますか? 送信されたデータに一貫性のあるスケーラブルなスケルトンを定義する方法は?これはモデル更新メッセージですか、または「blablablablahにエラーがありました」メッセージです バックエンドのどこからでもすべてに関するデータを送信しない方法 サーバー側とクライアント側の両方でビジネスロジックの重複を減らす方法

1
同じアプリケーション内のRESTful HTTPとwebsocket?
アプリケーションがWebSocketライブフィード用に既に開かれている場合、AJAXサーバーとのその他の通信にそれを使用する必要がありますか? 接続はすでに開かれているので、Request/Responseリアルタイムではなく、リアルタイムのリクエストに使用する必要がありますか? RESTful HTTPリクエストのほうがデバッグが簡単だと思うので、リクエストを好む ブラウザでURLまたはカールを使用して、APIが返すものをテストできます。を開くためにコードを記述する必要はありませんWebSocket。 同じアプリケーションにRESTful HTTP APIあるのWebSocketは奇妙でしょうか?
17 rest  ajax  websockets 

2
Websocketクライアントから送信する場合、マスキングは本当に必要ですか
現在のWebsocket RFCでは、Websocket クライアントが送信時にフレーム内のすべてのデータをマスクする必要があります(ただし、サーバーは必須ではありません)。プロトコルがこのように設計された理由は、フレームデータがクライアントとサーバーの間の悪意のあるサービス(プロキシなど)によって変更されるのを防ぐためです。ただし、マスキングキーはまだそのようなサービスで認識されています(各フレームの先頭でフレームごとに送信されます)。 フレームを次のポイントに渡す前に、そのようなサービスがキーを使用してコンテンツのマスクを解除、変更、および再マスクできると仮定するのは間違っていますか?私が間違っていない場合、これはどのようにして想定される脆弱性を修正しますか?

2
RESTまたは多層異種システムのメッセージキュー?
Client application-> Front-end API cloud server->のような3層システム用のREST APIを設計していますuser's home API server (Home)。 Homeはホームデバイスであり、Front-endWebsocketまたは長い投票(これは、RESTに違反している最初の場所です。後でさらに悪化します)を介した接続を維持することになっています。Front-endほとんどの場合、Client要求をHome接続にトンネルし、一部の呼び出し自体を処理します。にHome通知を送信することがありますClient。 Front-endHome基本的に同じAPI を持っています。LAN経由で直接Client接続している可能性がありますHome。この場合、それ自体にHomeいくつかのClientアクションを登録する必要がありFront-endます。 このシステムでのRESTの長所は次のとおりです。 RESTは人間が読める形式です。 RESTには、動詞(CRUDなど)、名詞、および応答コードのプロトコルオブジェクトへの明確に定義されたマッピングがあります。 HTTP上で動作し、可能なすべてのプロキシを渡します。 RESTコントラは次のとおりです。 リクエストとレスポンスのコミュニケーションスタイルだけでなく、パブリッシュサブスクライブも必要です。 3層通信エラーを処理するには、HTTPエラーコードでは不十分な場合があります。必要な接続が壊れていて、あるはずだったことを知るためだけに、非同期呼び出しにFront-end戻る場合があります。202 AcceptedHome503 Homeにメッセージを送信する必要がありますClient。ClientポーリングするFront-endか、接続を維持する必要があります。 我々は考えているWAMP / アウトバーンを、それがすでにメッセージキューのように見ていることを私を襲ったとき、機能をパブリッシュ/サブスクライブを取得するのWebSocketの上に。 一種のメッセージングキューをトランスポートとして評価する価値はありますか? メッセージキューの逆のように見えます: CRUD動詞とエラーコードをメッセージレベルで自分で定義する必要があります。 「メンテナンスコストが高い」と書いてありますが、どういう意味ですか? これらの考慮事項はどのくらい深刻ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.