Windows-Dienst vs. Taskplaner mit Starttrigger

Windows-Dienst vs. Taskplaner mit Starttrigger

Ich führe eine Desktopanwendung als Dienst mithilfe von NSSM (Non Sucking Service Manager) aus. Dabei handelt es sich um einen Wrapper für Anwendungen, die nicht als Dienst ausgeführt werden sollen.

Ich verwende einen alten Laptop mit Windows 10 als Server, indem ich einige Anwendungen als Windows-Dienste ausführe. Auf dem Laptop ist kein Benutzer angemeldet, sodass er weniger Ressourcen benötigt und dank der Windows-Dienste laufen die Anwendungen immer, auch wenn Windows neue Updates installiert und neu startet.

Mir wäre es jetzt lieber, wenn die Anwendungen als Windows-Dienste ohne die Hilfe einer anderen Anwendung (NSSM) laufen könnten, aber ich weiß, dass das nie passieren wird. Die Anwendungen sind Desktop-Anwendungen und nicht dafür gedacht, als Dienst zu laufen; die Entwickler werden sie nie mit einer solchen Funktion erweitern. (Ich habe schon danach gefragt.)

Tatsächlich gibt es eine Alternative zum Ausführen einer Anwendung als Dienst: Sie besteht darin, die Anwendung mit dem Taskplaner mit dem Auslöser „beim Windows-Start“ zu starten.

In beiden Fällen muss der Benutzer nicht angemeldet sein und der Computer kann automatisch neu starten und die Anwendung sollte immer im Netzwerk verfügbar sein. Der Vorteil des Taskplaners besteht darin, dass die Anwendung keinen Wrapper (NSSM) benötigt.

Ich bin mir jedoch nicht ganz sicher, wie zuverlässig der Taskplaner ist. Ein Windows-Dienst ist dafür gedacht, eine Anwendung rund um die Uhr auszuführen, und er verfügt über viele Wiederherstellungsoptionen. Der Taskplaner ist dafür gedacht, eine Anwendung periodisch und nicht rund um die Uhr auszuführen; daher gibt es keine Wiederherstellungsoption.

Meine Frage ist also:

Ist der Taskplaner mit dem Auslöser „beim Windows-Start“ eine gültige Alternative zu einem Windows-Dienst oder nicht?

Hat jemand Erfahrung mit beiden Methoden und kann die Vor- und Nachteile beider besser erklären?

Antwort1

Ja, in Ihrem Anwendungsfall ist es das, aber ich verstehe das so, dass der Taskplaner im Allgemeinen erwartet, dass die Aufgabe irgendwann beendet wird (und tatsächlich einenStandardoptionum die Beendigung der Aufgabe zu erzwingen, wenn sie nicht von selbst endet) und Sie testen möglicherweise einige unbekannte, willkürliche oder zumindest unvorhergesehene Grenzen, indem Sie es auf diese Weise ausführen. Wenn Sie eine geplante Aufgabe verwenden, ist es möglicherweise besser, eine separateGeplante Aufgabe zum Starten der Anwendungund ein weiterer, um die Anwendung zu stoppen (und/oder neu zu starten). Sie können die Startaufgabe so planen, dass sie beim Windows-Start ausgeführt wird, und die anderen Aufgaben über die Fernverwaltung ausführen.

Ein Bereich, in dem es nicht gleichwertig ist, sind Dienstabhängigkeiten. Es gibt keine integrierte Möglichkeit, die Ausführung einer geplanten Aufgabe von einer anderen abhängig zu machen, während dies bei Diensten möglich ist. Ein weiterer Bereich wäre die Ereignisprotokollierung. Ich vermute, dass keines davon in Ihrem Anwendungsfall nützlich wäre, da viele Anwendungen bei Bedarf ihre eigenen Protokolle führen und für ihre Ausführung nicht von anderen Anwendungen abhängig sind.

Beide verfügen über Optionen zur Wiederherstellung/zum Neustart nach einem Fehler

Service Erholung

Wiederherstellung geplanter Aufgaben

und beide können für einen verzögerten Start nach dem Start konfiguriert werden.

Dienst verzögerter Start

Verzögerter Start geplanter Aufgaben

Antwort2

Ich könnte Ihnen einen Kommentar hinterlassen, denn manchmal ist Google nützlich, aber ich erinnere mich, dass ich vor langer Zeit dasselbe erreichen wollte. In diesem Fall habe ich ein Ressourcenkit für Windows Server 2003 verwendet. Es enthielt ein Tool zum Erstellen eines Dienstes. Leider finde ich keine Informationen darüber, was ich damals verwendet habe *.

Dennoch zeigt eine Google-Suche viele Ergebnisse:

1) Verwendungsc.exe https://support.microsoft.com/en-us/help/251192/wie-erstelle-man-einen-windows-dienst-mit-sc-exe

https://stackoverflow.com/questions/3663331/wenn-Sie-einen-Dienst-mit-sc-exe-erstellen-so-werden-Sie-Context-Parameter übergeben

Hier ist ein Beispiel:

C:\Dokumente und Einstellungen\Administrator> sc create asperacentral binPath= "C:\Programme\Aspera\Enterprise Server\bin\Debug\asperacentral.exe" DisplayName= "Aspera Central" start= auto

2) Verwenden *svrany: Das war das Tool, das ich verwendet habe, ist mir gerade eingefallen. Aber es ist mittlerweile ziemlich alt und ich würde Ihnen nicht empfehlen, es zu verwenden, obwohl ich davon ausgehe, dass es noch funktioniert (unter Windows 7 funktioniert es).

3) Verwendung von srvstart.exe: https://www.rozanski.org.uk/software

Ein Tool, von dem ich vor kurzem gehört habe, das ich aber nie benutzt habe.

Ich bin sicher, dass es noch viele andere gibt, aber ich würde sc.exeMethode 1 ausprobieren.

Antwort3

Das Ändern der Priorität einer Anwendung, die mit dem Windows-Taskplaner ausgeführt wird, ist schwierig. Aber ich weiß nicht, wie das geht.

verwandte Informationen