2009-06-24 8 views
0

私は現在、自動化され、毎日実行されるWindowsアプリケーションを持っています。 目的はWebサービスにアクセスしてデータセットをダウンロードし、SQL 2005データベースに挿入することです。Windowsサービスアプリケーションが適切な方法です

この状況では、Windowsサービスアプリケーションが適していますか、柔軟性が高く、パフォーマンスが向上しますか。

答えて

5

あなたは間違いなくサービスとして利用することができますが、私はあなたがそれから何か利益を得るつもりはないと思います。サービスは常に実行されているため、通常は実行する必要があるアプリケーションで使用されます。これは、常時状態をチェックしているためです(リモートでの待機、データベース内の情報のn分ごとのチェックなど)。

あなたは1日に1回実行されるため、あなたはそれを変更しても利点はありません。自動化されたタスクが正しく設定されている場合、マシンが稼動している場合は、サービスと同様に実行する必要があります。サービス上でWindowsアプリケーション(コンソール専用)を使用する利点は、何かが失敗した場合に、アプリケーションを再起動して実行できることです。これは、サービスではそれほど簡単ではありません。なぜなら、余分なコードは、1日に何度も(あなたの場合は1回だけ)実行されることを確実にするためにプログラム内になければならないからです。再起動するサーバーを考慮する必要があるため、起動時にプロセスを実行させることはできません。これは、プロセスが実行されるはずのサーバーがダウンした場合、その時間だけプロセスを実行する必要があると考えるようにプログラムを「トリックする」方法を知っておく必要があることを意味します。ウィンドウのアプリケーションは、プロセスが完了した後に終了するため、この問題は発生しません。そのため、プロセスを再実行しないようにする追加のコードはありません。

+0

私は考えていたので、答えは多分、アップデートを頻繁にする、定期的に行う、はい、数回Windowsアプリケーションに固執することです – Stuart

+0

私の一般的なWindowsサービスの経験則は、毎分実行する必要があるか、プログラムが常に条件を確認するために実行されなければならない何かをしなければならない、私はサービスを作成する。そうでない場合、私はそれを通常のアプリとして残そうとします。 – kemiller2002

2

Windowsサービスでは、ユーザーが積極的にログオンしていなくてもタスクを実行できます。私は、そのようなタスクのために、Windowsサービスがより適していると言います。しかし、私はパフォーマンスの改善があるとは思っていません。

+2

FYI - ユーザがログインしていない場合、通常のスケジュールされたタスクもうまく動作します。 –

+0

GUI以外のコンソールアプリケーション、 右? –

+0

@Thorsten&Eric - そうです、現在実行中のWindowsアプリケーションは自律型です – Stuart

1

1日に1回(または単に定期的に)実行する必要がある場合は、そのサービスを私の意見では無駄にすることです。ほとんどの場合、何もしないだけです。

特にパフォーマンスを向上させるサービスについては何もないので、普通のアプリケーションとして残してスケジューラを使用して1日1回実行することをおすすめします。

0

データをSQL Serverに挿入する場合、そのデータには依存関係があります。私はSQLエージェントを使ってスケジューリングを調べます。

処理要件に応じて、SQL Serverをスケジュールする方法について十分に文書化されているSQL Server Integration Services(SSIS)を使用して、多くの作業を行うことができます。

あなたはすでにあなたがこれを書いていると言います。しかし、SSIS/SQL Agentを使用すると、「無料で」監視することができます。現在のコードを複製するのはほとんど手間ではありません。また、進行中のDBAは、ソースコードなどへのアクセスを必要とせずに、コードを非常に簡単に維持することができます。

関連する問題