.NET Service Pack 2 (SP2)
Windows Service Pack 2 (SP2) und .NET Framework SP2 führten eine Reihe wichtiger Änderungen ein, die sich auf die Funktionsweise von Windows-Diensten auswirkten. Zu diesen Änderungen gehören:
* Die Einführung der Service Control Manager (SCM) API.
* Die Möglichkeit, den Startmodus eines Dienstes als „Automatisch“, „Manuell“ oder „Deaktiviert“ festzulegen.
* Das Hinzufügen eines neuen Dienststatus-Flags, SERVICE_STOPPED_WAIT_HUNG, das anzeigt, dass das Stoppen eines Dienstes länger als erwartet dauert.
* Die Möglichkeit, das Konto anzugeben, unter dem ein Dienst ausgeführt werden soll.
* Das Hinzufügen neuer Sicherheitsfunktionen, wie z. B. die Möglichkeit, den Zugriff auf die Konfiguration und Daten eines Dienstes einzuschränken.
.NET Service Pack 3 (SP3)
Windows Service Pack 3 (SP3) und .NET Framework SP3 führten eine Reihe kleinerer Änderungen ein, die sich auf die Funktionsweise von Windows-Diensten auswirkten. Zu diesen Änderungen gehören:
* Das Hinzufügen eines neuen Dienststatus-Flags, SERVICE_START_PENDING, das anzeigt, dass der Start eines Dienstes länger als erwartet dauert.
* Die Möglichkeit, die Reihenfolge anzugeben, in der Dienste gestartet und gestoppt werden.
* Das Hinzufügen neuer Protokollierungsoptionen für Windows-Dienste.
Die folgende Tabelle fasst die wichtigsten Unterschiede zwischen Windows Service Pack 2 und 3 zusammen:
| Funktion | Servicepaket 2 | Service Pack 3 |
|---|---|---|
| Service Control Manager (SCM)-API | Eingeführt | Keine Änderung |
| Dienststartmodus | Kann auf „Automatisch“, „Manuell“ oder „Deaktiviert“ | eingestellt werden Keine Änderung |
| Servicestatus-Flags | Flag SERVICE_STOPPED_WAIT_HUNG hinzugefügt | Flag SERVICE_START_PENDING hinzugefügt |
| Dienstkonto | Kann angegeben werden | Keine Änderung |
| Sicherheitsfunktionen | Neue Sicherheitsfunktionen hinzugefügt, z. B. die Möglichkeit, den Zugriff auf die Konfiguration und Daten eines Dienstes einzuschränken | Keine Änderung |
| Protokollierungsoptionen | Eingeschränkte Protokollierungsoptionen | Neue Protokollierungsoptionen hinzugefügt |
| Dienstabhängigkeiten | Kann angegeben werden | Kann flexibler angegeben werden |
Arbeiten mit Windows-Diensten in .NET
Um einen Windows-Dienst in .NET zu erstellen, müssen Sie eine Klasse erstellen, die von der Klasse „ServiceBase“ abgeleitet ist. Die Klasse „ServiceBase“ stellt die Grundfunktionen bereit, die für einen Windows-Dienst erforderlich sind, z. B. die Möglichkeit, den Dienst zu starten, zu stoppen und anzuhalten.
Der folgende Code zeigt ein einfaches Beispiel eines Windows-Dienstes:
„
Verwenden des Systems;
Verwenden von System.ServiceProcess;
Namespace MyWindowsService
{
öffentliche Klasse MyWindowsService:ServiceBase
{
protected override void OnStart(string[] args)
{
// TODO:Code hinzufügen, um den Dienst zu starten.
}
protected override void OnStop()
{
// TODO:Code hinzufügen, um den Dienst zu stoppen.
}
}
}
„
Um einen Windows-Dienst zu installieren, müssen Sie das Tool „InstallUtil“ verwenden. Das Tool „InstallUtil“ befindet sich im .NET Framework SDK. Der folgende Befehl installiert einen Windows-Dienst:
„
InstallUtil.exe MyWindowsService.exe
„
Um einen Windows-Dienst zu deinstallieren, müssen Sie das Tool „UninstallUtil“ verwenden. Der folgende Befehl deinstalliert einen Windows-Dienst:
„
UninstallUtil.exe MyWindowsService.exe
„