2009-09-22 16 views
10

私のチームは、Windowsサービスまたはスケジュールされたタスクのいずれかが優れているという議論をしています。ジョブの実行専用のサーバーがあり、現在はすべてスケジュールされたタスクです。一部のジョブはファイルを取り込み、名前を変更してネットワーク上の他のディレクトリに配置します。他のジョブは、SQLからデータを抽出し、変更し、別の場所に出荷します。他のジョブのFTPファイルが出力されます。様々な種類がありますが、全体としてはかなり単純です。スケジュールされたタスクまたはWindowsサービス

これらは、スケジュールされたタスクではなくWindowsサービスを監視する方がずっと簡単であるため、スケジュールされたタスクではなくWindowsサービスとして実行されるのが一部です。いくつかは正反対です。結局、私たちの誰も、2つの方法の間の実際の事実の比較を提供する多くの経験を持っていません。私は他の人が経験したことについてのフィードバックを探しています。

答えて

6

実行中の場合 - Windowsサービス。

スケジュールされたタスクなど、さまざまな間隔で実行する必要がある場合。

4

ビルド機能を使用したジョブのScedulingは完全に有効です。優れたサービスを作成するためには、すべての機能を再現する必要があります。特定のイベントに反応しない限り、夜間のジョブをサービスに移行する理由はありません。

ファイルがフォルダに投稿された後にファイルを処理したいときは、ファイルシステムのウォッチャーを使用してフォルダを監視するサービスを作成するという点が異なります。

私は、それは、自身のサービスでタスクスケジューラを使用しては何も問題はありませんが、そのホイール

2

を再発明だと思います。しかし私たちは私が働いているのと同じ要件を持っており、私たちはこれらの仕事のいくつかを行う汎用プログラムを持っています。あなたの投稿は、あなたが各タスクのために個別のサービスを実行すると言っていると解釈しました。私はあなたのすべてのタスクを行う単一のデータベース駆動型(サービス)プログラムを書くことを検討します。データ入力の手間であり、全く新しいプログラムではありません。あなたが変更管理を練習するならば、この違いは重要な意味を持つ可能性があります。あなたがいくつかのタスク以上を持っているなら、その努力は厳しいかもしれません。この方法では、操作に最適なロギングメカニズムを作成することもできます。

これは、あなたを開始する場所のアイデアを与えるために、私たちのタスクプログラムのための私達の条件に対する文書の一部です:

  1. このプログラムは、データベースを駆動する必要があります。

  2. Windowsサービスとして実行する必要があります。

  3. プログラムは次のように「ジョブ」を処理できるようにする必要があります。

  4. ジョブズCEOは、ソースファイルが存在するかどうかを確認し、存在にか基づいた行動を取ることができるようにする必要がありますソースファイルの(すなわち、処理を続行すると、そこにファイルが存在しないことを報告するか、それともファイルを無視することが重要でないため、無視する。

  5. ジョブズCEOは、ステージング場所に、ターゲットの場所や

  6. コピーソースからファイルへのソースからファイルをコピーし、「処理」を実行した後、元のファイルのいずれかをコピーできるようにする必要がありますまたは対象の場所への「処理」の結果または

  7. ファイルをソースからステージング場所にコピーして「処理」を実行し、処理が最終結果になります。ジョブがにしてからコピーするかもしれません

  8. ソースとデスティネーションは、本質的に異なることができます:などUNC、SFTP、FTP、

  9. 「処理」は、ファイルを暗号化/復号化することができ、データを解析正しいフォーマットのファイル、ターミナルエミュレーションなどを介してメインフレームにファイルを送る。通常、.exeにパラメータを渡すコマンドラインを呼び出すことによって実装される。

  10. ジョブは、必要に応じて自分自身の後でクリーンアップする必要があります。中間ファイルまたは元のファイルを削除する、ファイルをアーカイブの場所にコピーするなど

  11. このプログラムでは、ジョブの各フェーズの成功と失敗を判断し、ロギング、

  12. ジョブは、特定の設定時間または特定の間隔(オプションで特定の設定時間内)でアクティブ化するように設定する必要があります。つまり、9:00〜5: 00。

  13. 新しいジョブを追加するにはUIが必要です。

  14. タイマーイベントが起動したように、ジョブを起動するためのボタンが必要です。

  15. プログラムの標準表示は、何が起こっているか、そしてプログラムが適切に機能しているかどうかをオペレータに示します。

これはすべて、独自のソフトウェアを作成することを前提としています。市場で利用可能なエンタープライズタスクスケジューラプログラムもいくつかあります。棚から購入することは、あなたにとってより良い解決策になるかもしれません。

+0

感謝を使用)とすぐに、それが到着すると、メールを処理します。たくさんの良いアイデア。 – user177213

+0

SQL Server Integration Servicesは、既定では提供されていない操作のためのカスタムScriptTasksを使用して、前述の要件に適している可能性があります。これらのタスクのために既に.exeが実装されている場合は、SSISフレームワーク内で使用することができます。また、オンデマンドまたはスケジュールに従ってSQL Serverジョブを使用して展開を管理できます。 –

+0

もちろん、これは既にSQL Serverを使用しているという前提に基づいています。他のベンダーがどのような選択肢を利用できるかはわかりません。 –

5

スケジュールされたタスク -

  1. 一部の固定/事前スケジュールでアクティビティを実行する場合。
  2. OSのメモリとリソースが少なくて済みます。
  3. インストールは不要です。継続監視が必要な場合
    1. - (。例えば債務不履行にリマインダーメールを送信)
    2. それは

    WindowsサービスをUIを持つことができます。
  4. もっと消費してOSをビジーにします。
  5. バージョンの変更中にインストール/アンインストールが必要です。
  6. UIはまったくありません(例:

は彼らにすべての提案のための賢明

関連する問題