.NET Service Pack 2 (SP2)
Windows Service Pack 2 (SP2) og .NET Framework SP2 introducerede en række vigtige ændringer, der påvirkede, hvordan Windows-tjenester fungerer. Disse ændringer omfatter:
* Introduktionen af Service Control Manager (SCM) API.
* Muligheden for at angive en tjenestes starttilstand som "Automatisk", "Manuel" eller "Deaktiveret".
* Tilføjelsen af et nyt servicestatusflag, SERVICE_STOPPED_WAIT_HUNG, som indikerer, at en tjeneste tager længere tid end forventet at stoppe.
* Muligheden for at angive den konto, som en tjeneste skal køre under.
* Tilføjelse af nye sikkerhedsfunktioner, såsom muligheden for at begrænse adgangen til en tjenestes konfiguration og data.
.NET Service Pack 3 (SP3)
Windows Service Pack 3 (SP3) og .NET Framework SP3 introducerede en række mindre ændringer, der påvirkede, hvordan Windows-tjenester fungerer. Disse ændringer omfatter:
* Tilføjelsen af et nyt servicestatusflag, SERVICE_START_PENDING, som angiver, at en tjeneste tager længere tid end forventet at starte.
* Muligheden for at angive den rækkefølge, som tjenester startes og stoppes i.
* Tilføjelse af nye logningsmuligheder for Windows-tjenester.
Følgende tabel opsummerer de vigtigste forskelle mellem Windows Service Pack 2 og 3:
| Funktion | Service Pack 2 | Service Pack 3 |
|---|---|---|
| Service Control Manager (SCM) API | Introduceret | Ingen ændring |
| Servicestarttilstand | Kan indstilles til "Automatisk", "Manuel" eller "Deaktiveret" | Ingen ændring |
| Servicestatusflag | Tilføjet SERVICE_STOPPED_WAIT_HUNG flag | Tilføjet SERVICE_START_PENDING flag |
| Servicekonto | Kan angives | Ingen ændring |
| Sikkerhedsfunktioner | Nye sikkerhedsfunktioner tilføjet, såsom muligheden for at begrænse adgangen til en tjenestes konfiguration og data | Ingen ændring |
| Logningsmuligheder | Begrænsede logningsmuligheder | Nye logningsmuligheder tilføjet |
| Tjenesteafhængigheder | Kan specificeres | Kan specificeres på en mere fleksibel måde |
Arbejde med Windows Services i .NET
For at oprette en Windows-tjeneste i .NET skal du oprette en klasse, der stammer fra klassen `ServiceBase`. `ServiceBase`-klassen giver den grundlæggende funktionalitet, der kræves for en Windows-tjeneste, såsom muligheden for at starte, stoppe og sætte tjenesten på pause.
Følgende kode viser et simpelt eksempel på en Windows-tjeneste:
```
bruger System;
ved hjælp af System.ServiceProcess;
navneområde MyWindowsService
{
offentlig klasse MyWindowsService :ServiceBase
{
beskyttet tilsidesættelse void OnStart(streng[] args)
{
// TODO:Tilføj kode for at starte tjenesten.
}
beskyttet tilsidesættelse void OnStop()
{
// TODO:Tilføj kode for at stoppe tjenesten.
}
}
}
```
For at installere en Windows-tjeneste skal du bruge værktøjet `InstallUtil`. `InstallUtil`-værktøjet er placeret i .NET Framework SDK. Følgende kommando installerer en Windows-tjeneste:
```
InstallUtil.exe MyWindowsService.exe
```
For at afinstallere en Windows-tjeneste skal du bruge værktøjet `UninstallUtil`. Følgende kommando afinstallerer en Windows-tjeneste:
```
AfinstallerUtil.exe MyWindowsService.exe
```