12

ワーカー ロールの多数のインスタンスと連携して動作する、Azure でホストされている Web アプリケーションがあります。現在、Web アプリは、ワーカーが取得できるように Azure キューにメッセージを配置することで、これらのワーカーに作業を渡します。ワーカーは、メッセージを「フィードバック」キューに入れることで、ステータス メッセージと進行状況メッセージを返します。現時点では、進行状況をブラウザー クライアントに通知するために、ブラウザーで ajax ベースの定期的なポーリング呼び出しを MVC コントローラー メソッドに対して行います。MVC コントローラー メソッドは、Azure の「フィードバック」キューを読み取り、これらのメッセージを json としてブラウザーに返します。 .

明らかに、SignalR はこの不器用なポーリング/キューイング アプローチの非常に魅力的な代替手段のように見えますが、送信する必要がある複数のワーカー ロール (Web ロールとは対照的に) について話しているときに、これを行う方法についてのガイダンスはほとんど見つかりませんでした。個々またはすべてのクライアントへのステータス。

Clemensvastersによる SignalR.WindowsAzureServiceBusは素晴らしいように見えますが、最後に少し高くて乾いたままになります。つまり、良いサンプル ソリューションが欠けています。

追加の解説: これまでの私の読書から、SignalR アプローチを介したワーカーロール ( Webロールとは対照的に) からブラウザー クライアントへの直接通信は不可能であるように思われます。ワーカーはキューを使用して Web ロールと通信する必要があるようです。これにより、ポーリング アプローチが強制されます。つまり、worker ロールからメッセージを取得するためにキューをポーリングする必要があります。このポーリングは、表示されるブラウザーから開始 (駆動) する必要があります (Web ロールでポーリング ループを設定するにはどうすればよいでしょうか?)。

要約すると、Clemens Vasters の SignalR.WindowsAzureServiceBus スケールアウト アプローチを使用しても、SignalR はワーカー ロールからブラウザーへの直接通信を処理できません。

専門家からのコメントをお待ちしております。

4

5 に答える 5

6

ワーカー ロールを SignalR クライアントとして使用できるため、ワーカー ロールは Web ロール (SignalR サーバー) にメッセージを送信し、Web ロールはメッセージをクライアントに転送します。

于 2012-07-03T14:06:28.733 に答える
1

SignalR スケールアウト バックプレーンの 1 つを使用している場合は、ワーカーが Web アプリケーションを介して接続されたクライアントと通信することができます。

SignalR SqlMessageBus を使用してメッセージを発行する方法では、これを行う方法について説明しています。

また、これを行う 1 つの方法を示す完全に機能するへのリンクもあります。

于 2014-01-23T19:36:58.317 に答える
1

Azure Service Bus Queues を使用して SignalR Web ロールにデータを送信し、それからクライアントに転送します。CAT ページには、非同期ループと送信を設定する方法の非常に良い例があります。

于 2012-03-14T13:58:18.670 に答える
1

この 2 つのテクノロジに関する私の知識は非常に基本的なものであることを覚えておいてください。そして、私はあなたの質問を誤解しているかもしれませんが、私にはかなり明白に思えます:

Web ロールは、worker ロールがメッセージを保管するキュー サーバーにサブスクライブできます。その場合、クライアントの "プル" がない場合、キュー サービスは Web サーバー側のコードに新しいメッセージを提供し、SignalR を介して、クライアントの要求を伴わずに変更をクライアントにプッシュします。Web とワーカーの間の通信は同じままです (私の意見では、これが適切な方法です)。

于 2012-07-12T18:55:46.413 に答える
0

NServiceBus などの代替メッセージ バス製品は、調査する価値があります。NServiceBus には、ポーリングを必要とせずに、プロセスの境界を越えて非同期的にメッセージを配信する機能があります。

于 2012-11-01T07:34:46.893 に答える