2009-04-02 7 views
0

私は、必要なASP.Netアプリケーションを別のマシンで実行する必要があります。これを行うために、私は両方のマシンに見えるキューにメッセージを残しています。作業が完了すると、メッセージは2番目のキューに残ります。ASP.Netアプリケーションのポーリング戦略?

2つ目のキューを定期的にチェックしてタスクが完了しているかどうかを確認するには、ASP.Netアプリケーションが必要です。

このようなループはどこに最適ですか? Global.asax?

私はある時間間隔の後に呼び出される関数を得ることができるということを覚えています。それは適切だろうか?

答えて

1

asp.netの定期的なタスクを達成するために、私は2つの許容アプローチ見つけた:

  1. スポーンwhileループ内のglobal.asaxでのApplication_Start中のスレッド、(1)(2)の作業を行いますスレッドを一定間隔でスリープ状態にします。
  2. また、Application_Startでは、ダミーアイテムをasp.netキャッシュに挿入し、特定の間隔で期限切れになり、キャッシュアイテムに有効期限が切れたときに呼び出されるコールバックを与えます。そのコールバックでは、作業を行い、同じ方法でキャッシュ項目を挿入することができます。

どちらの方法でも、エラーが発生してもスレッドが正常に動作することを確認する必要があります。 SessionStartとBeginRequestにリストアコードを配置して、スレッドまたはキャッシュ項目があるかどうかを確認し、何か問題が発生した場合は更新することができます。

1

これは定期的に行われ、他のプロセスがアイテムをキューに入れると仮定します。

この場合、アプリケーション開始時に単にキューを監視する別のスレッドが作成された場合は、そのスレッドをX秒間スリープ状態にしてから結果を確認することができます。