Frage

Ich bin eine Anwendung zu entwickeln, die als implementiert werden geht auf Windows Service und ich habe mich gefragt, was hat der beste Weg, behandeln die verschiedenen Einstellungen ( auf Benutzer- und Anwendungsebene). Die Sache ist, ich bin nicht ganz vertraut (noch) nicht mit allen zur Verfügung stehenden Optionen, so im Prinzip selbst ich begünstigende .NET System.Configuration (ConfigurationManager.RefreshSection ( „appSettings“) scheint verlockend ), obwohl ich den Kopf bin immer noch versagen um das ganze Bild zu wickeln, nämlich, wo die app.config Datei für einen bestimmten Dienst gespeichert werden, so weiter.

Also meine Frage für sie ist, was der beste Weg sei, benutzerdefinierbare Konfigurationsdetails für einen bestimmten Windows-Dienst speichern? Vielen Dank allen im Voraus für das Feedback.

War es hilfreich?

Lösung

Hmmm ... 'benutzerdefinierbare' Konfigurationseinstellungen für einen Windows-Dienst ...

Die Sache im Auge zu behalten ist, dass der Windows-Dienst im Hintergrund ausgeführt wird, so dass es keine direkte Möglichkeit für Benutzer mit ihrem interagieren. Was ich habe, dies zu umgehen getan ist, eine separate Front-End-Anwendung zu erstellen, die mit dem Windows-Dienst mithilfe von WCF in Verbindung steht. Auf diese Weise werden die ‚benutzerdefinierbare‘ Konfigurationseinstellungen beibehalten als Teil der Einstellungen der Front-End-Anwendung, nicht der Windows-Dienstes. Die Einstellungen werden einfach an den Windows-Dienst übermittelt eine Reihe von WCF-Nachrichten mit, wenn der Benutzer sie ändert.

In meinem Fall habe ich hinzugefügt sogar ein NotifyIcon meiner Front-End-Anwendung und Logik hinzugefügt, so dass die App aus der Taskleiste entfernt werden kann, wenn es minimiert wird. Es funktioniert auf die gleiche Art und Weise Task-Manager tut, wenn Sie auf dem Turn ‚ausblenden, wenn minimiert‘ Option. Dies gibt dem Benutzer die Illusion mit dem Service direkt in Wechselwirkung zu treten, obwohl es zwei völlig voneinander unabhängige Prozesse ist.

EDIT:

Als Antwort auf Ihren Kommentar, WCF ist einfach ein Messaging-API. Die Nachrichten werden in der Regel definiert als Klassen eingerichtet mit dem Datacontract und Datamember Attribute. Die Servicecontract und Operation Attribute definieren die WCF-Service-Schnittstelle. Sobald diese festgelegt sind, die Erstellung und den WCF-Dienst in Ihrem Windows-Hosting-Service ist einfach. Und wenn Sie Visual Studio 2008 haben, die clientseitige Proxy-Erstellung ist ein Kinderspiel als VS2008 es für Sie automatisieren kann.

Sobald das erledigt ist, Front-End-App instanziiert einfach eine Instanz der clientseitigen Proxy und ruft die Methoden auf diesem Proxy. Da jede Methode aufgerufen wird, nimmt der WCF Rahmen Pflege von Serialisierung und die Nachricht an den WCF-Dienst sendet es auf handeln. Es serialisiert dann eine Antwort, einschließlich Ausnahmen, zurück zum Proxy. Aus der Sicht des clientseitigen, zum Beispiel Front-End-App haben aufgerufen Sie einfach eine Funktion. Das ist die Schönheit der WCF! Es ist sehr analog Programmierung an Buchse, außer dass Sie die Anschlüsse nicht verwalten müssen. WCF kümmert sich um alle diese Sanitär für Sie.

Natürlich all dies voraus, dass Sie mindestens .NET 3.0 verwenden können. Wenn Sie Visual Studio 2008 verwenden, sind Sie in guter Form. Hier sind ein paar Tutorials, Ihnen zu helfen loszulegen:

Wenn Sie die grundlegenden Konzepte haben nach unten, würde ich empfehlen bei Juval Lowy sucht Website . Es gibt eine Menge freien WCF-bezogene Downloads dort, dass ich sehr hilfreich zu sehen, obwohl es ein bisschen weiter fortgeschritten ist. Verstehen Sie die WCF-Konzepte, bevor es zu weit einzutauchen.

Auch hier ist der ganze Sinn dieser Benutzer verschiedene Aspekte Ihrer Windows-Dienst so konfigurieren, zu helfen. Wenn Sie nicht über ein Front-End-GUI zur Verfügung stellen, dies zu tun, ich bin nicht sicher, wie sie es tun würde es kurz manuell die Datei app.config Manipulation selbst.

Hope, das hilft.

Andere Tipps

Wenn Sie nur einen einzigen Namen / Wert-Wörterbuch benötigen, um Ihre Konfigurationsparameter zu speichern, dann ist die app.config die einfachste Antwort. In Ihrer Lösung ist es „app.config“ genannt, aber wenn es gebaut ist es wird der Name der ausführbaren Datei + „.config“ umbenannt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top