7

Windows サーバーで実行している Web サイトがあり、さまざまなタスクを実行するスケジュールされたバックグラウンド タスクを追加したいと考えています。たとえば、クライアントは、サイトでの最近のアクティビティを要約した電子メールをユーザーが受信することを望んでいます。

実行する必要があるタスクが電子メールの送信だけである場合は、それらの電子メールを送信するスクリプトを実行するスケジュールされたタスクを設定するだけです。ただし、この特定のサイトでは、クライアントはさまざまなスケジュールされたタスクを実行することを望んでおり、その中には常に実行されているものもあれば、特定の条件が満たされた場合にのみ実行されているものもあります。現在、彼らは実装してほしいものの最初のセットを私に提供してくれましたが、将来的にはさらに多くのものがあることを私は知っています.

私が疑問に思っているのは、実行する必要があるタスクを定義してから、毎日実行し、定義されたスケジュールされた各タスクを実行するスケジュールされたタスクを 1 つ持つことができる、Windows 用の簡単なソリューションがあるかどうかです。これを行う最も簡単な方法はバッチ ファイルですか、それとも他に使用できる解決策はありますか?

4

5 に答える 5

4

生活をシンプルに保つために、1 つの大きなモノリシックな exe を作成することは避け、実行する作業を個々のタスクに分割し、それぞれに Windows スケジュール タスクを用意します。そうすれば、コードベースをより簡単に維持し、機能をより詳細なレベルで変更できます。

後で、スケジュールに基づいてさまざまなタスクごとにプラグインを動的にロードする Windows サービスを構築できます。これは、将来のプロジェクトでより再利用できる可能性があります。

しかし、正直なところ、締め切りがある場合は、KISS の原則を適用して、タスクごとにスケジュールされたタスクを使用します。

于 2008-12-20T06:32:44.053 に答える
2

Web ページ内からではなく、スケジュールされた EXE から操作を実行する際の問題は、操作が Web ページが持つリソースの恩恵を受けるか、または完全に必要とさえする可能性があることです。IIS キャッシュと ORM キャッシュは 2 つのものです。それが思い浮かびます。ORM の場合、Web アプリのコンテキスト外でデータベースの変更を行うと、致命的なことさえあります。私の好みは、localhost から Web ページを要求するように curl.exe をスケジュールすることです。

于 2010-07-15T15:01:26.053 に答える
2

私はすぐに Windows サービスを使用します。これは、要件に対して最も拡張可能な方法であり、サービスを作成しても開発時間はあまり増えません。おそらく、それほど遠くない時間の節約になるでしょう。

于 2008-12-20T06:49:34.380 に答える
2

パラメータを Web サービスに渡すだけの小さなコンソール アプリケーションを起動する Windows スケジューラ サービスを使用します。

たとえば、ユーザーがレポート #388 と #88 をスケジュールした場合、スケジュールされたタスクは次のようなコマンド ラインで作成されます。

c:\launcher\app.exe レポート:388 レポート:88

スケジューラが起動すると、このアプリは Web サービスで Web メソッドを実行するだけです。たとえば、InternalService.SendReport(int id) です。

通常、必要なすべてのビジネス ロジックが Web アプリケーションで利用可能になっています。このアプローチにより、最小限の労力で使用できるため、プラグ可能なモジュールなどを使用して複雑な .exe または Windows サービスを作成する必要はありません。

于 2008-12-24T23:08:39.610 に答える
1

Windows のスケジュールされたタスクを使用するか、スケジュール自体を実行する Windows サービスを作成します。

于 2008-12-20T06:31:29.953 に答える