Architectuur voor servicetoepassingsprogrammering
Notitie
Dit artikel is niet van toepassing op gehoste services in .NET. Zie voor de nieuwste inhoud van Windows-services die gebruikmaken van Microsoft.Extensions.Hosting.BackgroundService en de worker-servicesjabloon:
Windows-servicetoepassingen zijn gebaseerd op een klasse die de klasse over neemt System.ServiceProcess.ServiceBase . U overschrijft methoden uit deze klasse en definieert de functionaliteit om te bepalen hoe uw service zich gedraagt.
De belangrijkste klassen die betrokken zijn bij het maken van services zijn:
System.ServiceProcess.ServiceBase — U overschrijft methoden van de klasse bij het ServiceBase maken van een service en definieert de code om te bepalen hoe uw service in deze overgenomen klasse functioneert.
System.ServiceProcess.ServiceProcessInstaller en System.ServiceProcess.ServiceInstaller : u gebruikt deze klassen om uw service te installeren en te verwijderen.
Daarnaast kan een klasse met de naam ServiceController worden gebruikt om de service zelf te bewerken. Deze klasse is niet betrokken bij het maken van een service, maar kan worden gebruikt om de service te starten en te stoppen, opdrachten eraan door te geven en een reeks opsommingen te retourneren.
Het gedrag van uw service definiëren
In uw serviceklasse overschrijft u basisklassefuncties die bepalen wat er gebeurt wanneer de status van uw service wordt gewijzigd in Services Control Manager. De ServiceBase klasse bevat de volgende methoden, die u kunt overschrijven om aangepast gedrag toe te voegen.
Wijze | Overschrijven naar |
---|---|
OnStart | Geef aan welke acties moeten worden uitgevoerd wanneer uw service wordt uitgevoerd. U moet code schrijven in deze procedure om uw service nuttige werkzaamheden uit te voeren. |
OnPause | Geef aan wat er moet gebeuren wanneer uw service wordt onderbroken. |
OnStop | Geef aan wat er moet gebeuren wanneer uw service niet meer wordt uitgevoerd. |
OnContinue | Geef aan wat er moet gebeuren wanneer uw service normaal functioneert nadat deze is onderbroken. |
OnShutdown | Geef aan wat er moet gebeuren vlak voordat uw systeem wordt afgesloten, als uw service op dat moment wordt uitgevoerd. |
OnCustomCommand | Geef aan wat er moet gebeuren wanneer uw service een aangepaste opdracht ontvangt. Zie MSDN online voor meer informatie over aangepaste opdrachten. |
OnPowerEvent | Geef aan hoe de service moet reageren wanneer een energiebeheergebeurtenis wordt ontvangen, zoals een lage batterij of onderbroken bewerking. |
Notitie
Deze methoden vertegenwoordigen de statussen die de service in zijn levensduur doorloopt; de service overgaat van de ene status naar de volgende. U krijgt bijvoorbeeld nooit de service om te reageren op een OnContinue opdracht die eerder OnStart is aangeroepen.
Er zijn verschillende andere eigenschappen en methoden die van belang zijn. Deze omvatten:
De Run methode in de ServiceBase klasse. Dit is het belangrijkste toegangspunt voor de service. Wanneer u een service maakt met behulp van de Windows-servicesjabloon, wordt code ingevoegd in de methode van
Main
uw toepassing om de service uit te voeren. Deze code ziet er als volgt uit:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
Notitie
In deze voorbeelden wordt een matrix van het type ServiceBasegebruikt, waarin elke service die uw toepassing bevat, kan worden toegevoegd en vervolgens kunnen alle services samen worden uitgevoerd. Als u slechts één service maakt, kunt u er echter voor kiezen om de matrix niet te gebruiken en gewoon een nieuw object te declareren van ServiceBase en vervolgens uit te voeren. Zie Voor een voorbeeld : Services programmatisch schrijven.
Een reeks eigenschappen in de ServiceBase klasse. Deze bepalen welke methoden op uw service kunnen worden aangeroepen. Wanneer de CanStop eigenschap bijvoorbeeld is ingesteld
true
op, kan de OnStop methode in uw service worden aangeroepen. Wanneer de CanPauseAndContinue eigenschap is ingesteld optrue
, kunnen de OnPause en OnContinue methoden worden aangeroepen. Wanneer u een van deze eigenschappentrue
instelt op, moet u de verwerking voor de bijbehorende methoden overschrijven en definiëren.
U kunt ook een onderdeel gebruiken dat de naam heeft ServiceController om te communiceren met en het gedrag van een bestaande service te beheren.