0

さまざまな時点で多数のタスクを完了する必要があるソリューションを開発しています。例:

  • タスク 1 - メールボックスの監視、メール アイテムの処理
  • タスク 2 - メールボックス (別のフォルダー) を監視し、メール アイテムを処理する
  • タスク 3 - PDF レポートの生成
  • タスク 4 - フォルダーを監視し、新しいファイルが到着したときに添付ファイルとして電子メールでファイルを配布します。

私はすでに解決策を実装しましたが、基本的には実行するための簡単な修正にすぎませんでした。出来上がったので、現在のセットアップを再検討し、できるだけ効率的になるように改善したいと思います。

現在のソリューションでは、異なるタスクごとに個別のアプリケーションを作成し、タスク スケジューラを使用して特定の時間にそれらを実行しました。

  • タスク 1 は、スケジュールされたタスクで 5 分ごとに実行されるコンソール アプリケーションです。
  • タスク 2 は、スケジュールされたタスクで 5 分ごとに実行されるコンソール アプリケーションです (最初のアプリケーションの 2 分後、これはタスク 1 が電子メールをタスク 2 が監視しているフォルダーに移動するためです)。
  • タスク 3 は、スケジュールされたタスクの runonce アプリケーションとして毎日午前 5 時に実行されます。
  • タスク 4 は無期限に実行されています。

私の質問は、このタイプのアプリケーションに対するソリューションとして、これは合理的なアプローチのように思えますか? いくつかのタスクは、アプリケーションではなくサービスとして優れていると思われますか?

4

2 に答える 2

2

おそらく、さまざまなタスクを実行するように簡単に構成できる単一のサービスを使用すると思います(後でそれらを分離したい場合は、そうすることができます)。

特定のアプリケーションをスケジュールすることは問題なく、確かに簡単な作業方法ですが、これは私にとってサービスのように感じます. もちろん、「実行」ロジックを「呼び出し」側から切り離せば、簡単に切り替えることができます。

この決定によって、物事の効率面が大きく変わることはまずありません。現時点で全体的な効率について心配する十分な根拠はありますか? アプリケーションのプロファイルを作成して、ボトルネックがどこにあるかを調べましたか? 私は彼らが物事のスケジューリング側にいる可能性は低いと思います.

于 2009-10-12T09:04:21.867 に答える
1

サービスはこれにアプローチする正しい方法のように聞こえます。

PDF生成などの長時間実行されるサブタスクは、非同期プログラミング方法を使用して実行するのに適しています。つまり、完了時に親スレッドにコールバックするワーカースレッドを使用します。このようにして、モニタータスクはアクションタスクとは独立して実行できます。

于 2009-10-12T09:54:17.187 に答える