2016-05-07 8 views
4

Webアプリケーションレベルでスケジュールされたタスクを動的に作成するための最良の方法についてアドバイスが必要です。スケジュールされたタスクは、特定の終了時刻まで定期的にデータベース内に格納するために、外部APIエンドポイントから情報を引き出すことになります。ASP.NET Webサイトでスケジュールされたタスクを動的に作成する

通常、私は私のためにこの仕事をさせて頂きますのWindowsサービスを作成します。残念ながら、サイト管理者は複数のタスクを作成して、外部APIと異なる基準を照会することができます。したがって、複数のタスクが実行されている可能性があります。

私はタイマで動作するバックグラウンドワーカースレッドを実装するために取り組んでいます。これが最善のアプローチだろうか?または、HangfireまたはQuartz.netのようなものを使用して、バックグラウンドプロセスが常に実行されていることを確認するより良いソリューションになるでしょうか?

それは時間の特定の期間のために必要なときにタスクが常に実行できることを確認するために、Webアプリケーション内で実現可能かどうかはわかりません。

+0

一票を:) –

+0

[Henselman'sブログ](http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx)、Hangfireが最善である、私を信頼:) – sepehr

答えて

1

私はHangfireQuartz.Netを使用しようとしましたし、私の意見では、それらの両方は、スケジューリングタスクのために非常に優れています。 Hangfireは、スケジュールされたタスクを管理するための優れたインターフェースを持っていますが、私はIIS上でアプリケーションを公開した後、いくつかの問題が発生したとして、私はKeep Alive Service For IIS 6.0/7.5で完璧に動作Quartz.Netを使用するスイッチ。したがって、Quartz.Netを使用する場合は、Scheduled Tasks In ASP.NET With Quartz.Netをご覧ください。一方、アプリケーションプールのリサイクル、IIS /アプリケーションの再起動後に公開されたアプリケーションを有効にするには、アプリケーションを公開するサーバーにKeep Alive Service For IIS 6.0/7.5をインストールしてください。これらの問題にに関する詳細な情報については以下のページに私の答えを見てあります。このことができます

希望... Hangfireため

+2

サーバーを完全に制御を持っている場合は、あなたがHangfireを設定することができますかQuartz.Net IISで実行する代わりに、バックグラウンドサービスを使用してジョブを実行します。これにより、ジョブはより安定したものになります。私は、MSMQをサポートしているため、これを簡単に構成できることを発見しました。 –

+1

@ChrisChilvers実際には、スケジューリングをIISで実行する代わりにバックグラウンドサービスとして使用する方がよいでしょう。したがって、MVCアプリケーションの場合、どのように実行できますか?あなたは一歩一歩説明していただけますか?ありがとう。 –

+1

@MuratYıldız返信いただきありがとうございます、私はあなたが投稿したリンクを見ていきます。 – sbhomra

関連する問題