6

Windows Server 2003 マシンに常駐して毎分実行する必要があるコードが少しあります。

これを処理するための推奨される方法は何ですか? コンソール サービスとして設計し、タスク スケジューラを常に実行するだけでよろしいですか? (それも可能ですか?)それを吸い上げてWindowsサービスとして書くべきですか?

4

8 に答える 8

12

毎分実行する必要があるため、Windows サービスを作成することをお勧めします。それほど複雑ではありません。これまでにこれを行ったことがない場合は、その方法を学ぶことをお勧めします。

スケジュールされたタスクを毎分呼び出すことはお勧めできません。

于 2009-04-06T18:51:01.690 に答える
5

私はそれを吸い上げて、Windowsサービスとして書くと言います。スケジュールされたタスクがあまり信頼できるとは思いませんでした。実行されない場合、実行されない理由を簡単に見つける方法をまだ見つけていません。

于 2009-04-06T18:50:13.110 に答える
3

Windows のスケジュールされたタスクは、私たちの目的に対してかなり信頼性が高く、インストールの容易さと高度な回復機能により、Windows サービスよりもほぼすべてのケースで優先されます。書かれたコードの一部がロックされたり、本来あるべきではないコードの一部にループされたりすると、Windows サービスの常時稼働の性質が問題になる可能性があります。通常、コードはこれに似たファッション

Init();
Run();
CleanUp();

次に、スケジュールされたタスクの一部として、プロセスの実行時間に時間制限を設け、それより長く実行された場合にプロセスを強制終了させます。問題のあるコードがある場合、Scheduled Tasks はそれを強制終了し、プロセスは次の分で開始されます。

于 2009-10-14T06:29:17.420 に答える
2

定期サービスのヘルプを検索しているときに、Jon Galloway による非常に優れた記事に出くわしました。

スケジュールされたタスクに Windows サービスを使用する場合、さまざまなデメリットがあります。私はそれに同意しました。実装が簡単な Task Scheduled を使用することをお勧めします。タスク スケジューラの実装の詳細情報を参照してください。この情報が実装アプローチの最終決定に役立つことを願っています。

于 2010-03-09T07:42:24.427 に答える
2

毎分実行する必要がある場合は、Windows サービスとして構築します。私はスケジューラーを毎日のタスク以外には使用しません。

于 2009-04-06T18:51:29.893 に答える
2

何をしているかにもよると思いますが、一般的には、レイヤーを最小限にすることを常に支持しています。コンソール サービスとして作成し、タスク スケジューラを使用する場合、今後維持する場所が 2 つあります。

Windows サービスとして作成すると、何か問題が発生した場合にチェックする場所が 1 つ少なくなります。

于 2009-04-06T18:53:12.837 に答える
1

他に考慮すべき唯一の点は、仕事に何らかのデータベースのやり取りが含まれている場合は、データベースが提供する統合/スケジューリング サービスを検討することを検討することです。

たとえば、SQL Server 関連サービス用の SSIS パッケージを作成するのは少しやり過ぎのように思えるかもしれませんが、環境とうまく統合でき、独自のログ記録/エラー チェック メカニズムが既に配置されています。

于 2009-04-06T19:01:25.737 に答える
0

同意します。コンソール実行可能ファイルを作成して、毎分実行するようにスケジュールするのは、無駄な作業です。Quartz.Netのようなものを探索することをお勧めします。このようにして、単純なジョブを作成し、毎分実行するようにスケジュールできます。

于 2009-04-06T18:56:57.477 に答える