多くの定期的なアクティビティを実行する Windows サービスがあり、Windows フォーム アプリからこのサービスの設定を変更したいと考えています。ただし、サービスに最新のユーザー設定が含まれていることを確認する最善の方法についてはわかりません (実行する頻度、使用するフォルダー、ユーザーが指定できるその他のこと)。ユーザーはいつでも自由に設定を変更できるので、すぐにサービスに知らせてほしいと思います。私が検討しているオプションは次のとおりです。
- フォームとサービス共有は、3 番目の共有プロジェクトから同じ「Settings」オブジェクトを使用し、フォームは WCF の「UpdateSettings(newSettings)」呼び出しを使用して、変更があったことをサービスに通知します (または、必要に応じて、への呼び出し個々の設定を更新しますが、これはさまざまな呼び出しで多くのように思えます)。私は現在、基本的なメッセージに WCF を使用していますが、設定オブジェクトは他にもたくさんあるため、巨大になる可能性があります。
- フォームとサービスは、共通の構成ファイル (XML、または #1 と同じ設定オブジェクトですが、ディスクにシリアル化されています) を使用します。フォームは、オブジェクトが変更された後にオブジェクトの新しいコピーを書き込むだけで、サービスは頻繁にチェックし、新しいかどうかを選択して、設定のコピーを更新します。
- #2 と同じですが、サービスに設定を取得するように指示する基本的な WCF 呼び出しがあります。基本的に、#2 の「ポーリング」バージョンではなく「オンデマンド」バージョンです。
私は主観的であることを最もよく知っていますが、これらの選択の明白な賛否両論の理由に興味があります. アプリケーションの実行間 (再起動など) に設定を保存する必要があるため、とにかく設定をディスクにシリアル化する必要があるため、すでに #2 または #3 に傾いています。設定を保存できるディスク上の場所が必要ですが、おそらく AppData フォルダーは問題なく機能しますが、この場所への書き込み権限を持つのは管理者だけであるため、設定を変更できるのは管理者だけです。 (サービス アカウントを含むすべてのユーザーが読み取ることができます)。
あなたの洞察に感謝します!