3

プログラミングに関する限り、私は初心者です。スタックオーバーフローを見ると、私の質問に完全に答えるものは見つかりませんでした。私が制御していない Web サービスに XML ファイルをプッシュするために使用される C# コンソール アプリケーションを作成しました。これは、http Web リクエストを作成することによって行われます。このサービスは、おそらく Windows Server 2008 または Windows 7 バージョンで実行されます。開発は VS 2010 で行われます。私の最終目標は、このプログラムを 1 日に 2 回、ユーザーの関与をほとんど伴わずに実行することです。そして、サービスがこれを行うための最良の方法であると言われました. サービスはユーザー入力を受け付けず、通常はログ ファイルに出力されることを知っています。私のコンソール アプリはユーザー入力を受け付けませんが、ファイルを CRUD する機能が必要です。XMl ファイルを作成して Web リクエストに読み込むためです。

2 つの質問があります。

質問 1: このサービスで 12 時間ごとにアプリケーションを呼び出すようにしたいのですが、アプリケーションをいつ実行するかを決定するためにサービスを使用する方が信頼性が高いですか? または、Windows のビルトイン スケジューラ、またはクォークのような .net ソリューションを使用しますか? 私は信頼性と、ユーザーの関与をほとんど求めていません。セットのようなもので、取り引きを忘れます。

質問 2: プログラムを変換するための推奨されるベスト プラクティスは何ですか? 情報: 以前、アプリケーションを折りたたむ空の Windows サービスを作成しました。(これはチュートリアルで行われました。サービスにはサービスに必要なものがすべて含まれていますが、何もしません...まだ!OnStart、OnStop、インストーラーなど)それを行う最良の方法は何ですか?サービスの OnStart() メソッド内でアプリケーションを呼び出す必要がありますか? アプリケーションを dll としてサービスに追加する必要があります。できないと思っているわけではありません。この問題に関する私の検索では、サービスから開始してそれにコードを追加する方が良いことが指摘されているようです。私の目標は、このアプリケーションの変換に必要なコードを最小限に抑えることです。

助けてくれてありがとう、クリス

4

2 に答える 2

2

質問 1: 個人的に 1 日 2 回実行することは、スケジュールされたタスク タイプの操作のように思えます

質問 2: 私はそれを次のように説明します: 多かれ少なかれ本体をメソッドに入れstatic void Main(string[] args)ますOnStartOnStart次に、クラスでトリガー関数を呼び出すタイマーも作成します。しかし、私はWindowsサービスの作成につまずいただけなので、このアドバイスに100%確信があるわけではありません...

考慮すべきことの 1 つは、プロセスで何かが失敗した場合のリスクは何かということです。未処理の例外が発生する可能性がある場合、サービスは終了し、サービスを再起動するための特別な設定が必要になるか、エラー処理を完全にコーディングする必要があります。スケジュールされたタスクは、次のトリガー間隔で常に自動的に再試行されます。

于 2012-11-06T23:25:05.543 に答える
2

スケジューラーによって実行されるスタンドアロン プログラムは、作成とテストが簡単なので気に入っています。

サービスは、常に実行する必要がある場合に適しています...たとえば、何かを監視する場合などです。

于 2012-11-06T23:11:09.483 に答える