Delen via


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:

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 trueop, kan de OnStop methode in uw service worden aangeroepen. Wanneer de CanPauseAndContinue eigenschap is ingesteld op true, kunnen de OnPause en OnContinue methoden worden aangeroepen. Wanneer u een van deze eigenschappen trueinstelt op, moet u de verwerking voor de bijbehorende methoden overschrijven en definiëren.

    Notitie

    Uw service moet ten minste OnStart worden overschreven en OnStop nuttig zijn.

U kunt ook een onderdeel gebruiken dat de naam heeft ServiceController om te communiceren met en het gedrag van een bestaande service te beheren.

Zie ook