2016-11-23 7 views
0

私はウェブアプリケーションで働いている.net開発者です。過去数ヶ月から、私はWindowsアプリケーションの開発に着手しました.12の正午に毎日実行する必要がありましたので、Googleの助けを借りてWebサービスを作成しました。 。タスクスケジューラまたはタスクマネージャと比較して、ウィンドウサービスは内部的にどのように動作しますか?

しかし、私はWindowsサービスの仕組みについて疑問を抱いています。 私はたくさんの投稿を読んだが、誰も私の質問に答えなかった。

Webサービスの私の理解によれば、私は24時間すべて実行するタイマーを使用してスケジューラーを作成し、タイマー条件が満たされたときに必要なコードを実行します。

スケジューラでは、時間条件が満たされたときにアプリケーション(前のケースではサービス)を実行するスケジューラを設定します。

今私の質問:

  1. RAMの使用量については?

    私はサービスがRAMを利用していることを知っています。しかし、私のコードが10MBを考慮するように重いと考える場合。 The.exe fore.exeファイルは約10MB以上になります。だから、サービスが始まると、24時間に10MBのRAMがすべて使用されるか、サービスがスケジューラになってかなり小さくなり、時間が経過するとサービスコードがロードされます。

    スケジューラを考慮するとどのように動作しますか?私は、時間が満たされたときに起動されるトリガーがあると思う。起動された.exeファイルは一般的に私がサービスと呼ぶことができます(ただしアプリケーションです)。サービスコードはスケジューラから分離されているので、スケジューラだけが実行され、サービスコードがRAMにロードされます。

私は正しいですか? スケジューラは24時間のチェック時間もすべて実行しますか?

  1. 1つのインストーラで2つのサービスがある場合に備えてください。今度は2つのサービスがインストールされます。しかし、私は、両方のサービスがそれぞれ20MBの.exeサイズを持つ10MBの容量を持っているかどうかを知りたいと思います。両方のサービスが稼働を開始すると、サイズはそれぞれ10MB(相対的なサービスコードがあるとみなす)か20MB同じexeにあるため両方のサービスコードが読み込まれます)。

貴重なご意見をお寄せください。

ありがとうございます。

+0

1日に1回だけ実行するコードが必要な場合は、サービスは一切必要ありません。Windowsタスクスケジューラを使用して.exe(コンソールアプリケーション)を実行してください。 – Evk

+0

はい。という事は承知しています。しかし、それは私の質問ではありません。私の質問は、私が選ぶべきものではありません。私の質問は、メモリ、RAM、コード実行のロジックという点でどうやって動作するかです。 –

答えて

0

すべては実装によって異なります。

これは、Windowsサービスがどのように動作するかです:。

  1. あなたのインストーラは、Windowsのサービスオブジェクト
  2. を登録するサービスオブジェクトを使用すると、サービスコマンド(E Gを実装する必要がyourservice.exeyourservice.exe
  3. を開始します。:

    1. 既存のロジックをパック:サービスは

    私の提言を実行しているようOnStartは、OnStop

  4. は、今では
  5. yourservice.exe実行限り、これらの方法では何をすべきかに依存しますライブラリーに入れる
  6. サービスOnStartでタイマーを開始する(タイマーにはほとんどリソースが必要ありません)
  7. タイマーコールバックで
  8. ライブラリを使用して、あなたのロジックをインスタンス化(今、あなたの10メガが割り当てられている)
  9. 作業が完了した後に(あなたが永続的に何を使用しない場合は、10メガバイトが解放されます)すべてをクリーンアップ

ステップ3では、ロジックを2回インスタンス化することができます。ロジックを2回使用すると2倍の10メガを使用します。

関連する問題