ASP.NET MVC のキュー ソリューション
-
20-09-2019 - |
質問
私はWebアプリのキューイングの概念を調べています(つまり、一部のタイプのジョブは、Web リクエスト サイクルで完了するのではなく、別のワーカーによって完了するためにキューに入れられます)。
ASP.NET MVC 環境で利用できる、これに対する優れたソリューションが存在するかどうか知りたいです。
誰かが何か(良いまたは悪い)経験をしましたか?
ありがとう!
アップデート:
明確にしておきますが、私は受信リクエストをキューに入れることについて話しているのではありません。私が言いたいことを説明してみます...
1) 標準的な状況:
- ブラウザからのリクエスト
- サーバー処理が開始されます
- 長い仕事が始まる
- 長い仕事が終わりました
- サーバー処理が完了しました
- ブラウザに応答が返されました
2) 私が調べていること:
- ブラウザからのリクエスト
- サーバー処理が開始されます
- 長いジョブがキューに入れられました
- サーバー処理が完了しました
- ブラウザに応答が返されました
そして、別のプロセス (おそらく応答が送信された後) では次のようになります。
- 長いジョブがキューから取得されました
- 長い仕事が始まる
- 長い仕事が終わりました
最初の場合、ユーザーはサーバーの応答を長時間待ちましたが、2 番目の場合はすぐに応答しました。
もちろん、これに適した職種もあれば、そうでない職種もあります。
更新2:
クライアントは、長時間にわたるジョブの結果をすぐに更新する必要はありません。ユーザーがたまたまページを更新するたびに (もちろんジョブが完了した後)、変更内容がアプリケーションに表示されるだけです。
スタック オーバーフローで発生することのいくつかを考えてください。アプリケーションの各部分ですぐに更新されるわけではありませんが、これは非常に迅速に発生します。これらのジョブの一部がキューに入れられているのではないかと思います。
解決
MSMQキューするにジョブデータを投稿して持っていますWindowsサービスは、キュー内のアイテムを処理します。または、Web要求がキュー内の項目を処理するプロセスを起動させます。
他のヒント
サイService Busはあなたのために働くことがあり、別のソリューションです。
http://ayende.com/Blog/archive/ 12分の2008/17 /サイ・サービスbus.aspxする
あなたはESBを使用にチェックインすることがあります。私はMassTransitの周りプレイしました: http://code.google.com/p/masstransit/ > - ドキュメントがある(あるいは少なくともだった)少しまばらな、実現するのは簡単です。
。また、私は、Amazon EC2上で実行するためのアプリケーションを開発し、絶対に自分のAmazonSQSサービスが大好きです。
おかげで、
ハル
...あなたは、Windows Azureのに見たいと思うかもしれません。
:彼らは、同等のキューAPIを持っています
http://msdn.microsoft.com/en-us/library/dd179363。 ASPXする
私は、Webサーバーが非同期でWCFサービスを呼び出すことによって、このパターンを実装しています。あなたはWCFサービスを消費する際VSウィザードはあなたのための非同期プロキシを生成します。あなたがサービスへの要求の配信を保証していなければならない場合は、WCFサービスのためのトランスポート層としてMSMQを使用することができます。
私はChrisitanのコメントは、あなたの答えかもしれないと思うが、私はIISについて多くを知らない考慮し、それをキューイング、私の解決策は以下のようになります:
非同期要求を作成し、データベース内のジョブの詳細をロードします。その後、データベースをループに仕事をしていると、ジョブの詳細を処理します。私は自分のサイトのいずれかのためにこれを行います。そこに最高の解決策になるが、それは仕事を取得しない場合があります。
編集
私の答えはまだうまくいくかもしれないが、あなたが継続的にそのユーザのジョブが実行された場合、その後、あなたが必要とするデータをつかむ参照するデータベースをチェックするために、クライアント上でいくつかのポーリングメカニズムを持っている必要があります。