さまざまな日付のさまざまな時間にランダムに実行する必要のある多くのタスク(スケジュールされた時間でデータベースに記録されている)があり、各タスクの処理には長い時間がかかります。
毎週、新しいタスクが追加されます。これらすべてのタスクを正確な時間に自動的に実行するための最良の解決策は何ですか?
さまざまな日付のさまざまな時間にランダムに実行する必要のある多くのタスク(スケジュールされた時間でデータベースに記録されている)があり、各タスクの処理には長い時間がかかります。
毎週、新しいタスクが追加されます。これらすべてのタスクを正確な時間に自動的に実行するための最良の解決策は何ですか?
Phil Haack がブログ投稿で説明しているように、ASP.NET アプリケーションを使用して繰り返しバックグラウンド タスクを実行することは、通常は悪い考えです。
したがって、データベースにクエリを実行して必要なタスクを実行するコンソール アプリケーションを作成できます。次に、Windows スケジューラを使用して、必要な間隔でこのアプリケーションを実行します。別の方法として、ASP.NET アプリケーションにタスクを実装し、コンソール アプリケーションが対応するコントローラー アクションに対して HTTP 要求を発行するようにすることもできます。
サーバーにアクセスできず、ASP.NET アプリケーション以外のものをホストできない場合は、このアプローチを使用することの結果を完全に認識しておく必要があります (前述の記事で説明したように)。そのため、 Quartz.NETなどのライブラリを使用して、一定の間隔でコードの実行をスケジュールすることも 1 つの方法です。