Was sind die best practices, wenn Sie einen Prozess ausführen als windows-Dienst?
Gibt es irgendwelche Dinge zu kümmern, wenn Sie mit Ihrem Prozess oder eine ausführbare Datei als Dienst.Dinge wie silent logging.Kritische Fehler-reporting-Szenarien? etc? Wie handhaben Sie es ?
- Microsoft hat einen KB-Artikel für dieses support.microsoft.com/en-us/kb/821794.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für kritische Fehler-reporting, Sie sind gezwungen, um mit dem standard-Service-Einstellungen (in den Eigenschaften des installierten service), oder etwas zu tun sich. Dabei könnte es so einfach eine log-Datei, die Protokolle unerwartete Fehler (mit AppDomain.UnhandledException zu fangen und zu protokollieren), verwenden Sie das Windows-Ereignisprotokoll zu protokollieren, die ähnliche Informationen, oder mit anderen Prozess-Uhr service für Fehler (dh. den Dienst stoppen) und Alarmierung jemand.
Microsoft hat einen Artikel mit dem Titel "Einführung in die Windows-Service-Anwendungen" das ist eine gute Allgemeine Einführung in die Dienste in .Net.
Einige andere Dinge, die zum entwickeln von Windows-Diensten aus meiner Erfahrung:
OnStart
Methode der service startet einen neuen thread, zu dem der Dienst ausgeführt wird, und kehrt dann zurück.Zeigen keine message-Boxen /dialogs.
Sich bewusst sein, dass Ihre app wird in der Regel nicht unter einem Konto ausgeführt werden, wie ein angemeldeter Benutzer. So, wenn ein Benutzer Zugriff auf eine Datei/Verzeichnis, bedeutet dies nicht, dass der service so gut tun kann.
Stellen Sie sicher, Sie haben irgendeine form von alert-system informiert Sie, wenn der Dienst fällt z.B. senden Sie eine E-Mail an sich selbst oder Postfach.
Ich habe eine gute ein, fügen Sie den folgenden code in der OnStart-Methode, oder noch besser, bevor Sie es in Ihrer Main-Methode.
Grundsätzlich ist der wichtige Teil, wenn der
Debugger.Launch()
die pop öffnen Sie ein Fenster, wenn Sie den Dienst starten, und Fragen Sie, ob Sie möchten, um das Debuggen der service und mit dem Visual Studio. Es macht die Arbeit mit services genial und einfach. Ich legte die#warning
es ist einfach so, es zeigt sich in der Warnung Liste, um mich daran zu erinnern dass es da ist, obwohl die#if DEBUG
sollte verhindern, dass die meisten Probleme.Nur daran denken, nicht bereitstellen, mit dem dieser code ausgeführt wird (D. H. keine Freigabe für die debug-code), weil es Abstürzen tut wenn es kein Visual Studio auf dem Rechner installiert.
Ob es Sinn macht, vergessen Sie nicht zu implementieren des Ereignisses Anhalten.
Behandeln alle Ausnahmen, so scheitert es würdevoll, wenn es scheitert.