web-dev-qa-db-ja.com

Quartz.NETとWindowsのスケジュールされたタスク。それらはどのくらい違うのですか?

Quartz.NET とWindowsのスケジュールされたタスクの比較を探していますか?

それらはどのくらい違うのですか?それぞれの長所と短所は何ですか?どちらを使用するかを選択するにはどうすればよいですか?

TIA、

26
Serge Wautier

Quartz.NETを使用すると、以前のポイントのいくつかを対比することができます。

  1. 書くコード-.NET言語で意図を表現し、単体テストを記述し、ロジックをデバッグできます
  2. イベントログとの統合により、データベースへの書き込みも可能にするCommon.Loggingがあります。
  3. 堅牢で信頼性も高い
  4. さらに豊富なAPI

それは主にあなたが何を必要としているかについての質問です。 Windowsのスケジュールされたタスクは、必要なすべてを提供する場合があります。ただし、クラスタリング(分散ワーカー)、トリガーまたは失火処理ルールのきめ細かい制御が必要な場合は、Quartz.NETがこれらの領域で提供するものを確認することをお勧めします。

要件を満たす最も単純なものを採用しますが、変更を許可するのに十分抽象的です。

22
Marko Lahma

私の直感的な反応は、さらに別のスケジューラーをインストールする前に、最初に統合されたWinSchedulerをニーズに合わせて動作させることです-理由:

  1. インストールは必要ありません-デフォルトでインストールされ、有効になっています
  2. 書くコードはありません-メタデータとして表現されたジョブ
  3. イベントログなどとの統合。
  4. 堅牢で信頼性が高い-MSFT、Googleなどに十分です。
  5. 適度に豊富なAPI-ジョブの作成、ステータスの確認など。
  6. リモート管理ツールと統合
  7. セキュリティ統合-異なる資格情報でジョブを実行する
  8. 監視ツール

それがあなたのニーズを満たさないならば、それからクォーツに手を伸ばしてください。 Quartzには確かにこれらの機能の多くもありますが、可能であれば、所有および管理するためのさらに別のサービスを追加することは避けてください。

16
stephbu

私にとって、他の回答に含まれていない重要な違いの1つは、スケジューラーによって実行されるものです。

Windowsタスクスケジューラは、実行可能プログラムとスクリプトのみを実行できます。 Quartz内で使用するために記述されたコードは、プロジェクトの.NETコンポーネントと直接対話できます。

タスクスケジューラでは、シェルの実行可能ファイルまたはスクリプトを作成する必要があります。そのシェルの内部で、プロジェクトのコンポーネントと対話できます。このシェルコードを書くことは難しいプロセスではありませんが、余分なファイルの展開を検討する必要があります。

プロジェクトの存続期間中にスケジュールされたタスクをさらに追加することが予想される場合は、追加の実行可能シェルまたはスクリプトファイルを作成する必要があり、展開プロセスを更新する必要があります。 Quartzでは、これらのファイルは必要ありません。これにより、追加のタスクを作成してデプロイするために必要な総労力が削減されます。

2
hurcane

残念ながら、Quartz.NETジョブアセンブリは、プロセス/ホスト/サービスを再起動しないと更新できません。これは、一部の人(私を含む)にとってはかなり大きなものです。

タスクスケジューラで実行されるジョブのフレームワークを構築することは完全に可能です。 MEFベースのアセンブリは、単一のコンソールアプリから呼び出すことができ、すべてが構成UIを介して管理されます。人気のあるマネージラッパーは次のとおりです。

Quart.NETでの短い作業は楽しかったですが、再起動の要件が大きすぎて克服できませんでした。マルコは何年にもわたって素晴らしいの仕事をしてきました、そして彼はいつも親切で敏感でした。おそらくいつか、プロジェクトはこれに対処する複数のAppDomainサポートを取得するでしょう。 (とはいえ、それは多くの仕事になることを約束します。彼らがそれを引き受けることに決めたならば、彼と彼の貢献者に称賛を送ります。)

マルコを言い換えると、必要に応じて:

  1. クラスタリング(分散ワーカー)
  2. トリガーまたは失火処理ルールのきめ細かい制御

...次に、Quartz.NETが要件になります。

0
InteXX