2009-08-01 25 views
5

私は通常のWindowsアプリケーション(ほとんどの場合C#)しか作成していません。 Windowsサービスと通常のWindowsアプリケーションとの違いは何ですか?何が違うの?アプリケーションができないサービスは何ができますか?開発者の視点から見た違いは何ですか?どのように作成するのですか?定期的なアプリケーション(GUIアプリケーションがないのでコンソールアプリケーションかもしれません)を作成し、それを特別な方法で実行またはインストールするか、それ以上行う必要がありますか?Windowsサービスと通常のアプリケーションの違いは何ですか?

答えて

9

すぐに私に飛び出すいくつかのことがあります。

  • 彼らが別のコンソールで実行した結果としてVistaの
  • で始まる全く異なるコンソールで実行して、サービスがデスクトップと対話することはできません。したがって、本質的にUIの直接サポートはありません。通常は、通常のプログラムとして実行され、サービスと通信するためのメカニズム(名前付きパイプなど)を使用する兄弟UIアプリケーションを作成する必要があります。
  • 通常、いつでも1つのサービスインスタンスしか実行できません。
  • プロセスはユーザーごとです。サービスはワークステーションごとであり、しばしば複数のユーザーにサービスを提供します。
0

主な違いは、Windowsサービスはバックグラウンドサービスとして実行したいものであり、UIは必要ないということです。たとえば、ドライブ上のファイルを検索するためのインデックスを作成するサービスです。 。|。管理ツール|

もう一つの利点は、あなたが

ユーザーがログインを使用すると、サービスが開始されたときに呼び出されているオーバーライドできる方法もあります時にサービスが自動的に起動することができている/(つまり、コントロールパネルから停止サービス)。

Visual Studioには、作成に使用できる特別なプロジェクトタイプがあります。例は下記のサイトをご覧ください:http://www.dotheweb.net/articles/dotnet/services.aspx

+0

私はむしろ、マシン上でインタラクティブなセッションをせずにサービスを稼働させることができます。ユーザーがさまざまな方法でログオンすると、ロットまたはプログラムを開始できます。サービスを利用することは実際には利点ではありません。 – Joey

6

This MSDN pageは、スティックを振るよりも多くのドキュメントを作成します。 This pageはおそらく一般的にそれらのより良い紹介です。

アプリケーションとして実行するプロセスとサービスとして実行するプロセスの主な違いは、サービスがユーザーとセッションとの通常の関連付け外で完全に動作できることです。したがって、サービスは、ユーザーがログインする前に開始され、ユーザーがログオフした後も継続して実行できるように実行できます。したがって、サービスは、オペレーティングシステムの実際の機能の大部分を実装するために使用されます。

サービスはプロセスと1:1マッピングとして実行されているわけでもありません。多くのサービスは、通常はsvchostを使用して1つのプロセス内に存在することができます(プロセスエクスプローラでこれらを見て、これがしばしばどのように機能するかを示します)。これにより、比較的軽量なサービスには複数のプロセスが必要ないため、起動時の労力が軽減されます。

C#でサービスを実装することは非常に簡単です。このpageは、どのように非常に使いやすいかを示しています。

実際には、Windowsのサービスは、HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services(これらの 'イメージパス')(ほとんどの場合、単純に実行可能ファイルと使用するパラメータ)を定義するレジストリ内の足場です。どのサービスをどのサービスとみなしているか、どのサービスをどのサービスに依存しているか、どのサービスが依存しているか、起動時/起動時、または必要に応じて起動するかどうかなどです。

2

あなたがUnixをよく知っているなら、WindowsサービスはUnixデーモンに似ています。特定のユーザーに関連付けられておらず、常にバックグラウンドで実行されています。

関連する問題