2009-09-01 11 views
1

私はいくつかのインスタンスの.NETアプリケーションの状態を管理するC#でカスタムWindowsサービスを開発しています。 ServiceControllerを通じてデータ(トークンなど)をサービスに渡すにはどうすればよいですか?カスタムWindowsサービスにデータを渡す

これは可能ですか、またはWindowsサービスの背後にある設計意図を完全に理解していませんか?

答えて

6

JonnyD、

ただ、我々は同じページにしていることを確認する:あなたがあなた自身のサービスを作成している場合、あなたはSystem.SystemProcessServiceBaseクラスから派生するつもりです名前空間。 ServiceControllerのは、(あなたが作成しているものとして)のWindowsサービスと対話するために使用することができますが、ServiceControllerのクラスの目的は、それがその同じように、主にサービス制御のために使用されるということですWindows Service Control Manager(SCM)は、Windowsサービスの起動、停止、一時停止などを行います。あなたはおそらくServiceControllerExecuteCommandメソッドを通じて、あなたのサービスと何らかの形の "ビジネスのやりとり"を行うことができますが、それは本当にその主な目的ではありません。

他のアプリケーションとやりとりするように設計されたほとんどのWindowsサービスは、通話の目的で呼び出し元が使用できるリスナーやその他のよく知られたエンドポイントを確立します。これらのリスナは、リモーティング、ウェブサービス、WCFなどを介して処理することができ、サービス起動時に作成することができ(例えば、OnStartメソッドの起動)、サービストップでの解体(OnStop)。

私はあなたのサービスに会おうとしている特定の要件についてはわかりませんが、あなたは状態管理サービスを作成しようとしています。これらは比較的一般的なサービスであり、すべての発信者が目的の状態管理クラス/タイプの1つのインスタンスに確実にアクセスするように、シングルトンとして作成されることがよくあります。以下のリンクは、リモーティングを使用してそのようなサービスを実装する方法に関するいくつかのアイデアとガイダンスを提供します。あなたはWCFと、より精通している場合、あなたはまた、.NETリモートの代わりにそれを使用することができます:代わりにChatServer(例に示すように)の

http://www.codeproject.com/KB/IP/Chat_Application.aspx

を、あなたは/状態管理サーバを持っていると思いますタイプ。

こちらがお役に立てば幸いです。

+0

ショーン情報ありがとうございます。 – JonnyD

関連する問題