7

Web アプリのキューイングの概念を調べています (つまり、Web 要求サイクルで完了するのではなく、別のワーカーによって完了するために、いくつかの種類のジョブをキューに入れます)。

ASP.NET MVC環境で利用できる、これに対する適切なソリューションが存在するかどうかを知りたいです。

誰かが(良いまたは悪い)経験をしたことがありますか?

ありがとうございました!

アップデート:

明確にするために、着信リクエストをキューに入れることについて話しているのではありません。私が何を意味するのかを説明しようとします...

1) 標準的な状況:

  • ブラウザからのリクエスト
  • サーバー処理開始
  • 長いジョブの開始
  • 長い仕事が終わった
  • サーバー処理終了
  • ブラウザーに返された応答

2)私が調べていること:

  • ブラウザからのリクエスト
  • サーバー処理開始
  • キューに入れられた長いジョブ
  • サーバー処理終了
  • ブラウザーに返された応答

そして別のプロセスで(おそらく応答が送信された後):

  • キューから取得された長いジョブ
  • 長いジョブの開始
  • 長い仕事が終わった

最初のインスタンスでは、ユーザーはサーバーの応答を長時間待ちましたが、2 番目のインスタンスでは応答が速かったです。

もちろん、これに適した特定のタイプの仕事もあれば、そうでない仕事もあります。

更新 2:

クライアントは、長いジョブの結果ですぐに更新する必要はありません。ユーザーがたまたまページを更新したときはいつでも(もちろんジョブが完了した後)、変更はアプリケーションに表示されます。

スタック オーバーフローで発生するいくつかのことを考えてみてください。アプリケーションの各部分ですぐに更新されるわけではありませんが、これは非常に迅速に発生します。これらのジョブのいくつかはキューに入れられていると思われます。

4

6 に答える 6

5

ジョブ データをMSMQ キューにポストし、Windows サービスにキュー内の項目を処理させます。または、Web 要求によって、キュー内のアイテムを処理するプロセスが生成されるようにします。

于 2009-08-31T13:05:51.630 に答える
3

Rhino Service Bus は、あなたに役立つ別のソリューションです:
http://ayende.com/Blog/archive/2008/12/17/rhino-service-bus.aspx

于 2009-08-31T13:08:58.637 に答える
1

別のコメントで、Amazonのsqsサービスに相当するものを探していると述べたので、WindowsAzureを調べたいと思うかもしれません。それらには同等のキューAPIがあります:http:
//msdn.microsoft.com/en-us/library/dd179363.aspx

于 2009-08-31T18:27:32.440 に答える
1

このパターンは、Web サーバーに WCF サービスを非同期的に呼び出すことで実装しました。VS ウィザードは、WCF サービスを使用するときに非同期プロキシを生成します。サービスへの要求の配信を保証する必要がある場合は、MSMQ を WCF サービスのトランスポート層として使用できます。

于 2009-08-31T19:38:47.477 に答える
0

Chrisitan のコメントがあなたの答えになると思いますが、IIS とそれを使用したキューイングについてあまり知らないことを考えると、私の解決策は次のようになります。

非同期リクエストを作成し、ジョブの詳細をデータベースにロードします。次に、データベースをループしてジョブの詳細を処理するジョブを作成します。私は自分のサイトの 1 つでこれを行います。最善の解決策ではないかもしれませんが、仕事は完了します。

編集

私の答えはまだうまくいくかもしれませんが、データベースを継続的にチェックしてそのユーザーの仕事が完了したかどうかを確認し、必要なデータを取得するには、クライアントに何らかのポーリングメカニズムが必要です。

于 2009-08-31T12:47:52.397 に答える