2008-09-03 10 views

答えて

7

何年も前、私はRob Howardがバックグラウンドでタスクを処理するためにHttpModuleを使用する方法を説明しました。キャッシュを使用するほど滑らかではありませんが、状況によってはより良いかもしれません。

This blog post詳細を持っており、あなたの周りを見れば、同じ情報を取り込む他の多くがあります。

4

Windowsサービス

0

スケジュールされたタスク、またはcronジョブ。

1

主にデータ処理タスクで、MSSQLを使用している場合は、スケジュールされたSSISタスクはどうですか?

0

スケジュールされたタスクまたはcronジョブの問題は、Webサーバーとメモリスペースを共有しないことです。 Webサーバーからのページを要求したスケジュールされたタスクを設定できますが、長時間実行されるタスクで問題が発生する可能性があります。実際のASP.Netアプリケーションスタック上で低優先度のスレッドを実行して、キャッシュのクリーンアップ、リソースの監視などの単純なユーティリティタスクを実行し、一般的なハウスキーピングに対処するのは良いことです。

3

DotNetNukeの処理方法を参照してください。私はそれがVB.NETで書かれていることを知っているが、私はC#にコードを改造した。私はソースを熟読していて、スケジュールされたタスクを設定するために管理領域に機能があることに気づいた。これらのタスクは、管理インタフェースを介してセットアップされ、データベースに格納されます。サイトが開始されると、Global.asaxファイルを介して、このサービスを実行する別のスレッドが作成され、スケジュールされたタスクがスケジュールされた時刻に実行されます。私は正確なロジックを覚えていませんが、それはしばらくありましたが、他の人がAsp.Netアプリケーションの帯域外プロセスをどのように行っているかについては、確かに良いリソースです。このテクニックはまだAsp.Netアプリケーション内のロジックを保持しますが、私の意見では帯域外で実行されます。

0

単純なキューファイルと別のエージェント。帯域外プロセスの各タイプごとに、指定されたプロセスを実行するために必要なデータを含むキューファイルのディレクトリを監視する別のエージェント.exeを作成します。

これは汚れているように見えるかもしれませんが、現実世界では柔軟性が高く、ASP.netの処理空間では多くの処理を行っていないことがわかります。より多くのRAM/CPU /ディスクが必要になると、Monoでエージェントプロセスを実行しているLinuxサーバ。

0

あなたがasp.netページに最も慣れているなら、あなたの仕事を処理する小さなアプリを書くことができ、あなたのウェブサイトを監視する外部サービスでアプリを「ping」することができます。これはアプリを生き生きとさせてくれるでしょう。