2017-12-07 8 views
0

定期的に作業を行う必要があります。たとえば、DB内のデータをチェックし、必要に応じて計算を行い、DBに保存します。ASP.netはアプリケーションの無限ループを作成して作業を開始します

問題は、プールシャットダウンまでに必要なすべてのタスクを定期的に実行するアプリケーション開始時に別のスレッドで「スリープして作業してください」という無限の外観を開始することがどれほど悪いのですか?

どのような欠点がありますか? MVCリソースの再利用可能/解放可能な概念のためにasp.net処理のパフォーマンスに影響するかもしれないような気がしますが、私は何の証明も見つけることができません。

リンクやヒントに感謝します。ありがとう!

P.S.私はこのようなことをするのに最適な場所はWindowsサービスだが、クライアント環境での展開にはいくつかの困難があります。もしあれば、他のオプションもチェックしています。

+0

asp.net/mvcは本当にこのような場所ではありませんが、そこでは[Hangfire](https://www.hangfire.io/)を見てください。 – Fran

答えて

0

私はあなたが望むことをするための単純なコンソールアプリケーションを構築し、次にコンソールアプリケーションを実行するためにスケジュールされたタスクを設定することをお勧めします。

これは、あなたが説明しているようなメンテナンスユーティリティを実行するために使用した方法です。

それ以外の場合、Asp.netアプリケーションでは、ワーカープロセスがリセットされる可能性があります。ホストにはアイドルタイムアウトが発生している可能性があります。そして、一般的には、非常にシンプルなコンソールアプリケーションが好きな言語を使い、同じタスクを達成するのは間違ったアプローチだと思う。

+0

残念ながら、アプリケーションは誰かがサーバーにログインするまで起動しないので、Webサーバーでは動作しません。しかし、とにかく私の疑問を確認してくれたことに感謝します。 – user2932688

+1

「残念ながら、誰かがサーバーにログインするまではアプリケーションが起動しませんでした」 これは、スケジュールされたタスクのためのものです。しかし、もしあなたが望むのであれば、アプリケーション起動時またはユーザログイン時にメンテナンススタイルのタスクを起動するには、global.asax、Application_Start()メソッド内のコンソールアプリケーション(またはプロジェクト内の他のコード)への呼び出しを埋め込みます。例。 –

+1

私は必要なときにWebワーカーからタスクを開始 - それは、アイデアのおかげで、動作する可能性があります。 – user2932688

関連する問題