Windows-servicehost
Het WindowsService-voorbeeld demonstreert een WCF-service (Windows Communication Foundation) die wordt gehost in een beheerde Windows-service. Windows Services worden beheerd met behulp van de Services-applet in Configuratiescherm en kunnen worden geconfigureerd om automatisch te worden opgestart nadat het systeem opnieuw is opgestart. Het voorbeeld bestaat uit een clientprogramma en een Windows-serviceprogramma. De service wordt geïmplementeerd als een .exe programma en bevat een eigen hostingcode. In andere hostingomgevingen, zoals Windows Process Activation Services (WAS) of Internet Information Services (IIS), is het niet nodig om hostingcode te schrijven.
Notitie
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
Na het bouwen van deze service moet deze worden geïnstalleerd met het Installutil.exe hulpprogramma zoals elke andere Windows-service. Als u wijzigingen aanbrengt in de service, moet u deze eerst verwijderen met installutil /u
. De Setup.bat- en Cleanup.bat-bestanden in dit voorbeeld zijn de opdrachten voor het installeren en starten van de Windows-service en het afsluiten en verwijderen van de Windows-service. De WCF-service kan alleen reageren op clients als de Windows-service wordt uitgevoerd. Als u de Windows-service stopt met behulp van de Services-applet van Configuratiescherm en de client uitvoert, treedt er een EndpointNotFoundException uitzondering op wanneer een client probeert toegang te krijgen tot de service. Als u de Windows-service opnieuw start en de client opnieuw uitvoert, slaagt de communicatie.
De servicecode bevat een installatieklasse, een WCF-service-implementatieklasse die het ICalculator-contract implementeert en een Windows-serviceklasse die fungeert als de runtimehost. Met de installatieklasse, van waaruit wordt Installerovergenomen, kan het programma worden geïnstalleerd als een NT-service door het hulpprogramma Installutil.exe. De service-implementatieklasse, WcfCalculatorService
is een WCF-service die een basisservicecontract implementeert. Deze WCF-service wordt gehost in een Windows-serviceklasse met de naam WindowsCalculatorService
. Als u wilt kwalificeren als een Windows-service, neemt de klasse de en methoden over ServiceBase en implementeert dezeOnStart(String[]).OnStop() Er OnStart(String[])wordt een ServiceHost object gemaakt voor het WcfCalculatorService
type en geopend. In OnStop(), de ServiceHost wordt gesloten door het aanroepen van de Close(TimeSpan) methode van het ServiceHost object. Het basisadres van de host wordt geconfigureerd met behulp van het add-element>, een onderliggend element van< baseAddresses>, een onderliggend element van het< hostelement>, een onderliggend element van het< service-element>.<
Het eindpunt dat is gedefinieerd, maakt gebruik van het basisadres en een wsHttpBinding>.< In het volgende voorbeeld ziet u de configuratie van het basisadres en het eindpunt dat de CalculatorService beschikbaar maakt.
<services>
<service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
</baseAddresses>
</host>
<!-- This endpoint is exposed at the base address provided by host: http://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
...
</service>
</services>
Wanneer u het voorbeeld uitvoert, worden de bewerkingsaanvragen en -antwoorden weergegeven in zowel de service- als clientconsolevensters. Druk in elk consolevenster op Enter om de service en client af te sluiten.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.
Nadat de oplossing is gebouwd, voert u Setup.bat uit vanaf een opdrachtprompt met verhoogde bevoegdheid van Visual Studio om de Windows-service te installeren met behulp van het hulpprogramma Installutil.exe. De service moet worden weergegeven in Services.
Als u het voorbeeld wilt uitvoeren in een configuratie van één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.