Windowsサービスのユーザー編集可能な設定を保持する最良の方法は何でしょうか?

StackOverflow https://stackoverflow.com/questions/1202835

質問

Windowsサービスとして実装されるアプリケーションを開発していますが、さまざまな設定に対処する最善の方法は何だろうと考えていました(ユーザーおよびアプリケーションレベルで)。事は、私は(まだ)利用可能なすべてのオプションに完全に精通していないので、原則として.NETの独自の System.Configuration (ConfigurationManager.RefreshSection(" appSettings")を好む魅力的です)、私はまだ全体像に頭を包むことに失敗していますが、つまり、特定のサービスのために保存されている app.config ファイルはどこにありますか。

皆さんへの私の質問は、特定のWindowsサービスのユーザー編集可能な構成の詳細を保存する最良の方法は何でしょうか?フィードバックをお寄せいただきありがとうございます。

役に立ちましたか?

解決

うーん... Windowsサービスの「ユーザー編集可能」構成設定...

留意すべきことは、Windowsサービスはバックグラウンドで実行されるため、ユーザーが直接操作する方法がないことです。これを回避するために行ったのは、WCFを使用してWindowsサービスと通信する別のフロントエンドアプリケーションを作成することです。このようにして、「ユーザー編集可能な」構成設定は、Windowsサービスではなく、フロントエンドアプリケーションの設定の一部として保持されます。ユーザーが設定を変更すると、設定は一連のWCFメッセージを使用してWindowsサービスに通知されます。

私の場合、フロントエンドアプリケーションにNotifyIconを追加し、最小化されたときにアプリをタスクバーから削除できるようにロジックを追加しました。 [最小化時に非表示]オプションをオンにした場合、タスクマネージャーと同じように機能します。これにより、完全に独立した2つのプロセスであるにもかかわらず、ユーザーはサービスと直接対話するように見えます。

編集:

あなたのコメントに応えて、WCFは単なるメッセージングAPIです。メッセージは通常、DataContract属性とDataMember属性で装飾されたクラスとして定義されます。 ServiceContractおよびOperationContract属性は、WCFサービスインターフェイスを定義します。これらを定義すると、Windowsサービス内でWCFサービスを簡単に作成してホストできます。また、Visual Studio 2008を使用している場合、VS2008で自動化できるため、クライアント側プロキシの作成は簡単です。

これがすべて完了すると、フロントエンドアプリは単にクライアント側プロキシのインスタンスをインスタンス化し、そのプロキシのメソッドを呼び出します。各メソッドが呼び出されると、WCFフレームワークはメッセージをシリアル化し、WCFサービスに送信して処理を実行します。次に、例外を含む応答をプロキシにシリアル化します。フロントエンドアプリなど、クライアント側の観点からは、単に関数を呼び出しただけです。それがWCFの美しさです!接続を管理する必要がないことを除いて、ソケットプログラミングに非常に似ています。 WCFがすべての配管を処理します。

もちろん、これはすべて、少なくとも.NET 3.0を使用できることを前提としています。 Visual Studio 2008を使用している場合、体調は良好です。開始に役立つチュートリアルがいくつかあります:

基本的な概念を理解したら、Juval Lowyのウェブサイトをご覧になることをお勧めします。 WCFに関連する無料のダウンロードがたくさんありますので、見てみると非常に役立ちますが、もう少し高度です。そこを深く掘り下げる前に、まずWCFの概念を理解してください。

繰り返しになりますが、これの全体的な目的は、ユーザーがWindowsサービスのさまざまな側面を構成できるようにすることです。これを行うためのフロントエンドGUIを提供しない場合、app.configファイル自体を手動で操作する以外に、どのように行うのかわかりません。

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

他のヒント

設定パラメータを保存するために名前/値ディクショナリが1つだけ必要な場合、app.configが最も簡単な答えです。ソリューションでは" app.config"と呼ばれますが、ビルドされると、実行可能ファイルの名前+" .config"に名前が変更されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top