2009-07-10 14 views
0

私は以下のことをする必要があり、私はあなたの入力を得ることができるかどうか疑問に思っていました。 毎晩、ある場所(ftpサーバー上)にファイルが作成されています。私がする必要があるのは、このファイルをダウンロードし、Webサービス経由でリモートSQLサーバーにインポートすることです。 また、いつでも手動でインポートプロセスを再実行し(ファイルをダウンロードしてサーバーにコンテンツを送信する)必要があります。 私はWindowsサービスがこれには良いと思っていましたが、いつでもインポートプロセスを手動で再実行する方法がわかりません。誰もこれに似た何かをしましたか?もしそうなら、あなたが使った技術は何でしたか?Windowsサービスに関するいくつかの方向が必要

おかげ

+1

Windowsサービスは、一定の間隔で実行する必要があるまで、過剰なものです。代わりに、スケジュールタスクを作成することをお勧めします。 –

+1

定期的に実行する必要がある場合でも、Windowsサービスはおそらく過剰です。スケジュールされたタスクを一定間隔で実行するように設定できます。 – adrianbanks

答えて

4

Windowsサービスは、ファイルに対して10分ごとにポーリングする場合を除いて、少し難題です。それ以外の場合は、代わりにスケジュールされたタスクを実際に使用する必要があります。

Windowsサービスを使用する場合は、simple Custom Commandを実行してポーリングすることができます。リモーティング、IPCなども機能しますが、かなり重くなります。

+0

私はスケジュールされたタスクを作成するのが本当に新しいです。私は、Windowsアプリケーションを作成し、タスクをタイマーや何かでそれを実行する必要がありますか?これ以上の情報があれば助けになります。ありがとう – zSynopsis

2

Service Controllerクラスは、あなたに役立つかもしれません。別の「フロントエンド」アプリから、実行中のサービス内でコマンドを実行するために使用することができます。

0

SyncBackSEのようなものを使用して、FTPを使用してファイルをダウンロードし、Afterイベントを実行してインポートを実行することができます(実行するものを特定できます)。これはスケジュール(Windowsのスケジュールされたタスクを介して実行)に置くことができますが、手動で実行することもできます(プロファイルを選択してから実行してください)。実際にはプログラミングは必要ありませんが、私はあなたの質問に対するサーバー管理者の回答が多いと思います。

0

デスクトップアプリケーションからWindowsサービスと話したい場合(手動で実行するように指示する)、標準的な方法は名前付きパイプを使用することです。これらは実装が非常に簡単で、サービスと話すときに必要なセッション/デスクトップの境界をまたいだパイプです。

0

私は、スケジュールされたタスクでこれを行うことができることに同意します。しかし、本当に代わりにWindowsサービスを使用したい場合は、 "MyService.exe -onetime"のようなコマンドラインパラメータでプログラムを実行できます。次に、Main関数で、そのコマンドラインパラメータが含まれていたかどうかを確認できます。そうだった場合は、通常のコードをスキップして代わりにインポートを実行することができます。

関連する問題