Einstellungen zwischen Formularanwendung und Windows-Dienst (oder wirklich jeder n-Schicht) synchron halten

Ich habe einen Windows-Dienst, der eine Reihe von regelmäßigen Aktivitäten ausführt, und ich möchte die Einstellungen dieses Dienstes über eine Windows Forms-App ändern. Ich bin mir jedoch nicht sicher, wie ich am besten sicherstellen kann, dass der Dienst die aktuellsten Benutzereinstellungen enthält (wie oft ausgeführt wird, welche Ordner für bestimmte Aufgaben verwendet werden sollen, was auch immer der Benutzer angeben kann). Der Benutzer kann die Einstellungen jederzeit nach Belieben ändern, und ich möchte, dass der Dienst fast sofort darüber informiert wird. Hier sind die Optionen, die ich wiege:

Das Formular und die Dienstfreigabe verwenden dasselbe Objekt "Einstellungen" aus einem dritten freigegebenen Projekt, und das Formular verwendet einen WCF-Aufruf "UpdateSettings (newSettings)", um den Dienst über Änderungen (oder optional über einen Aufruf) zu informieren um jede einzelne Einstellung zu aktualisieren, obwohl dies über verschiedene Aufrufe hinweg sehr viel zu sein scheint). Ich verwende derzeit WCF für grundlegende Nachrichten, aber das Einstellungsobjekt kann sehr groß sein, da viele andere Dinge darin sindForm und Service verwenden eine gemeinsame Konfigurationsdatei (XML oder dasselbe Einstellungsobjekt von Nummer 1, jedoch serialisiert auf Festplatte). Das Formular schreibt nur eine neue Kopie des Objekts, nachdem es geändert wurde, und der Dienst prüft von Zeit zu Zeit, ob es neu ist, und aktualisiert seine Kopie der Einstellungen Wie # 2, aber mit einem einfachen WCF-Aufruf, der den Dienst auffordert, die Einstellungen abzurufen. Im Grunde genommen eine "On-Demand" -Version von # 2 anstelle einer "Polling" -Version.

Ich weiß, dass das Beste subjektiv ist, aber ich bin an offensichtlichen Vor- oder Nachteilen für diese Entscheidungen interessiert. Da ich meine Einstellungen zwischen den Starts der Anwendung (Neustarts usw.) speichern muss, muss ich die Einstellungen trotzdem auf die Festplatte serialisieren, sodass ich mich bereits auf # 2 oder # 3 beschränke. Ich brauche einen Speicherort auf der Festplatte, an dem ich die Einstellungen speichern kann, aber möglicherweise funktioniert der Ordner "AppData" einwandfrei. Dadurch können jedoch nur Administratoren die Einstellungen ändern, da sie die einzigen sind, die zum Schreiben an diesen Speicherort berechtigt sind (Jeder Benutzer, einschließlich des Dienstkontos, kann es lesen.)

Vielen Dank für Ihren Einblick!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage