質問

私はWebアプリのキューイングの概念を調べています(つまり、一部のタイプのジョブは、Web リクエスト サイクルで完了するのではなく、別のワーカーによって完了するためにキューに入れられます)。

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

誰かが何か(良いまたは悪い)経験をしましたか?

ありがとう!

アップデート:

明確にしておきますが、私は受信リクエストをキューに入れることについて話しているのではありません。私が言いたいことを説明してみます...

1) 標準的な状況:

  • ブラウザからのリクエスト
  • サーバー処理が開始されます
  • 長い仕事が始まる
  • 長い仕事が終わりました
  • サーバー処理が完了しました
  • ブラウザに応答が返されました

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

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

そして、別のプロセス (おそらく応答が送信された後) では次のようになります。

  • 長いジョブがキューから取得されました
  • 長い仕事が始まる
  • 長い仕事が終わりました

最初の場合、ユーザーはサーバーの応答を長時間待ちましたが、2 番目の場合はすぐに応答しました。

もちろん、これに適した職種もあれば、そうでない職種もあります。

更新2:

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

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

役に立ちましたか?

解決

MSMQキューするにジョブデータを投稿して持っていますWindowsサービスは、キュー内のアイテムを処理します。または、Web要求がキュー内の項目を処理するプロセスを起動させます。

他のヒント

サイService Busはあなたのために働くことがあり、別のソリューションです。
http://ayende.com/Blog/archive/ 12分の2008/17 /サイ・サービスbus.aspxする

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

私はChrisitanのコメントは、あなたの答えかもしれないと思うが、私はIISについて多くを知らない考慮し、それをキューイング、私の解決策は以下のようになります:

非同期要求を作成し、データベース内のジョブの詳細をロードします。その後、データベースをループに仕事をしていると、ジョブの詳細を処理します。私は自分のサイトのいずれかのためにこれを行います。そこに最高の解決策になるが、それは仕事を取得しない場合があります。

編集

私の答えはまだうまくいくかもしれないが、あなたが継続的にそのユーザのジョブが実行された場合、その後、あなたが必要とするデータをつかむ参照するデータベースをチェックするために、クライアント上でいくつかのポーリングメカニズムを持っている必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top