Best Practice zum speichern von Einstellungen für .NET Windows-Dienst: Service-Property-Einstellungen, Serialisierung,
Arbeite ich an einem .NET Windows-Dienst, wo ich versucht bin, um die Einstellungen zu speichern, die verwendet wird, wenn der Dienst gestartet ist und, während er ausgeführt wird. Ich habe gesucht, durch posts auf SO und gefunden, dass die Verwendung der Einstellungen in den Eigenschaften des Projekts ist für die Verwendung mit Konsole und winforms-Anwendungen. Jedoch, Google und SO schweigen, wenn es bezieht sich auf das speichern dieser Einstellungen mit einem windows-Dienst.
Kennt jemand ein wissen, wenn es die richtige ist, um diese Einstellungen in eine .NET-service? Wenn nicht, ist die Serialisierung meine nächste beste Wahl? Hat jemand schon praktische Anwendungen für Einstellungen im service-und festgestellt, dass es das beste ist, verwenden Sie eine bestimmte Methode?
InformationsquelleAutor AndHeCodedIt | 2010-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe Probleme mit den Einstellungen.Einstellungen. Zum Beispiel, wenn Sie änderungen vornehmen müssen, die zur Zeit ausführen, kann es Probleme mit den Einstellungen überschrieben werden, indem diese zunächst gespeichert in den Einstellungen.Einstellungen-Datei im Gegensatz zu dem was gezeigt wird sollte gespeichert werden, pro der app/web.config. Folglich habe ich alle meine Web-Service-proxy-Einstellungen "statisch" in die Eigenschaften und ziehen Sie Sie manuell aus der app/web.Konfiguration über eine helper-Methode und programmgesteuert festgelegt werden. Dies umgeht Probleme.
Ein Beispiel für das Problem, das wir hatten: ich zeigte meinem Entwicklungsrechner einen web-service auf einem test-server um den code zu testen, verbraucht web service. Wenn der code wurde verschoben, auf unserem test-server, keine Probleme manifestiert sich - wie der test-server war immer noch spitz auf den gleichen web-service auf dem gleichen server testen. Jedoch, wenn wir verschoben die Anwendung auf dem Produktions-server und konfiguriert die web -.config auf den Produktions-server, den wir begonnen screwy Ergebnisse. Es dauerte ein wenig Mühe, genau zu bestimmen, dass, obwohl wir hatten konfiguriert die Anwendung auf den Produktions-server-Implementierung des web-service, es war immer noch die Verbindung zu dem web service auf dem test-server. Es war nicht, bis wir die geänderten Einstellungen.Einstellungen auf meiner Entwicklungs-Maschine und kompiliert die Anwendung, dass es geklappt hat. Darüber hinaus haben wir auch festgestellt, dass, wenn es DNS-Probleme mit der Verbindung zu den Produktions-web-Dienst, sondern als scheitern, es fiel zurück auf die ursprünglichen Einstellungen, die angegeben wurden, in den Einstellungen.Einstellungen beim erstellen des web-service-proxy in der Anwendung - proxy-generator-eigentlich die hard-codes. Folglich, wenn es Netzwerk-Ausfälle, anstatt leicht diagnostiziert Fehler bei der Verbindung, es ist einfach zu fiel zurück auf den test server und wir machten uns langsam unverständliche Daten Fragen. Ich bin mir nicht sicher, ob dies ein bekanntes problem ist oder ob es behoben wurde, aber es ist sicherlich etwas, was Sie beachten sollten.
Konsequent, da dann, ich habe immer die service-Eigenschaften, um statische und verwendet eine helper-Methode zum Lesen der richtigen Einstellungen aus dem Internet.config direkt geschrieben und Sie programmatisch, wie dies scheint, dieses problem zu umgehen.
Kann es scheinen, wie das problem, das ich hatte, hat nichts zu tun mit dir, weil ich mit Web-Services, welche nichts zu tun mit Windows-Diensten, jedoch, jeder Umgebung wo Sie brauchen, um in der Lage sein, um die Einstellungen zu ändern zur Laufzeit ohne neu kompilieren zu müssen, könnten von diesem Problem betroffen sein, so sollten Sie sich bewusst sein, dass wenn du in einem Dev - /Test - /Produktionsumgebung oder in der Tat jede Umgebung, wo Sie brauchen Ihre app konfiguriert werden zur Laufzeit (d.h. ohne neu kompilieren zu müssen) , die Sie bekommen können zu unvorhersehbaren Ergebnissen bei der Verwendung von Einstellungen.Einstellungen. Hüten Sie sich vor.
Ich muss zugeben, ich habe nicht erlebt, diese Probleme auf allen, und wir verwenden eine Menge von windows-Diensten mit app-Einstellungen Lesen in der app.config-Datei - einschließlich der web-service-URLs. Denkst du, dieses problem ist insbesondere für windows-Dienste v win forms-Anwendungen, oder nur eine Allgemeine app.config-Fehler/Problem?
Ich habe nicht eine ganze Menge von Untersuchung, welche Bereiche den Rahmen dieser betroffenen um ganz ehrlich zu sein war es eine unternehmenskritische Anwendung [D. H., es fixiert und bewegen sich auf]. Von der Untersuchung habe ich, so schien es, das Problem wurde möglicherweise in Bezug auf das zusammenspiel der web service-proxy-Einstellungen.- Einstellungen und nicht über die Verbindung richtig auf das web.config Aussehen, seine Einstellungen. Es kann sein, dass es nur wirkt dieser Bereich des Frameworks ist, kann es Auswirkungen auf andere Bereiche, ich bin mir nicht sicher.
Ich denke, die Frage ist, wie man Zugriff auf die Einstellungen. Ich denke, es ist so: Wenn Sie auf Sie mit
My.Settings
im VB.Net es Lesen werden die Einstellung aus .config-Datei, aber wenn Sie, was aussieht, um das gleiche in C# (Settings.Default
), dann wirst du Lesen Sie die Standardeinstellungen kompiliert. Um dies zu vermeiden in C# Sie erstellen eine Instanz der settings-Objekt, denke ich. Es ist natürlich auch wichtig, daran zu erinnern, um neu zu laden und speichern Sie die Einstellungen, wenn nötig (Mach ich normalerweise, dass in der OnStart und OnStop).Sorry für den necro-posting, aber ich wollte nur darauf hinweisen, dass, um die Standardeinstellungen überschreiben Sie tun müssen, so in der "Host" - Montage. Im Grunde überall dort, wo Ihr Programm Main (), oder global.asax, oder Systemstart.cs. Sie müssen kopieren Sie die <configSections><sectionGroup name="applicationSettings"><section name="YourApp.Eigenschaften.Einstellungen"> aus Ihrer Klasse die Bibliothek, um Ihre Haupt-app.config, dann können Sie überschreiben die notwendigen Teile in der <applicationSettings><YourApp.Eigenschaften.Einstellungen> - Abschnitt in Ihre Haupt-app.config. Hoffe, das hilft/sinnvoll ist.
InformationsquelleAutor BenAlabaster
Ich normalerweise verwenden die Registrierung, um Informationen zu speichern muss ich in meinem Dienst ich.e-port usw.
InformationsquelleAutor Adrian Thompson
Ich die
Settings.settings
Zeug für die Speicherung der config für meine Dienste und ich habe keine Probleme. Nur das übliche, dass die Benutzer-Einstellungen, die geändert werden, gespeichert werden, ist es üblich verschleiern Lage, dass Sie auf die Jagd rund um für, wenn Sie möchten, Bearbeiten Sie von hand.InformationsquelleAutor Hans Olsson
Ich dont sehen jeden Grund, nicht zu verwenden Sie die Einstellungen in den Eigenschaften des Projekts, als würden Sie für eine winForms app. Wir tun dies, und es funktioniert gut.
InformationsquelleAutor barrylloyd