Dela via


Windows-tjänstvärd

WindowsService-exemplet visar en WCF-tjänst (Windows Communication Foundation) som finns i en hanterad Windows-tjänst. Windows Services styrs med hjälp av Services-appleten i Kontrollpanelen och kan konfigureras att startas automatiskt efter en systemomstart. Exemplet består av ett klientprogram och ett Windows Service-program. Tjänsten implementeras som ett .exe program och innehåller en egen värdkod. I andra värdmiljöer, till exempel Windows Process Activation Services (WAS) eller Internet Information Services (IIS), är det inte nödvändigt för dig att skriva värdkod.

Kommentar

Konfigurationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.

När du har skapat den här tjänsten måste den installeras med verktyget Installutil.exe som alla andra Windows-tjänster. Om du ska göra ändringar i tjänsten måste du först avinstallera den med installutil /u. De Setup.bat- och Cleanup.bat filer som ingår i det här exemplet är kommandona för att installera och starta Windows-tjänsten och för att stänga av och avinstallera Windows-tjänsten. WCF-tjänsten kan bara svara på klienter om Windows-tjänsten körs. Om du stoppar Windows-tjänsten med hjälp av Services-appleten från Kontrollpanelen och kör klienten uppstår ett EndpointNotFoundException undantag när en klient försöker komma åt tjänsten. Om du startar om Windows-tjänsten och kör klienten igen lyckas kommunikationen.

Tjänstkoden innehåller en installationsklass, en WCF-tjänstimplementeringsklass som implementerar ICalculator-kontraktet och en Windows Service-klass som fungerar som körningsvärd. Installationsklassen, som ärver från Installer, tillåter att programmet installeras som en NT-tjänst av verktyget Installutil.exe. Tjänstimplementeringsklassen, WcfCalculatorService, är en WCF-tjänst som implementerar ett grundläggande tjänstkontrakt. Den här WCF-tjänsten finns i en Windows Service-klass med namnet WindowsCalculatorService. För att kvalificera sig som en Windows-tjänst ärver klassen från ServiceBase och implementerar OnStart(String[]) metoderna och OnStop() . I OnStart(String[])skapas ett ServiceHost objekt för WcfCalculatorService typen och öppnas. I OnStop()stängs ServiceHost genom att anropa Close(TimeSpan) -metoden för ServiceHost objektet. Värdens basadress konfigureras med hjälp av< add-elementet>, som är underordnat< baseAddresses>, som är underordnat< värdelementet>, som är underordnat <tjänstelementet>.

Slutpunkten som definieras använder basadressen och en wsHttpBinding>.< Följande exempel visar konfigurationen av basadressen samt slutpunkten som exponerar CalculatorService.

<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>

När du kör exemplet visas åtgärdsbegäranden och svar i både tjänst- och klientkonsolfönstren. Tryck på RETUR i varje konsolfönster för att stänga av tjänsten och klienten.

Så här konfigurerar du, skapar och kör exemplet

  1. Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. När lösningen har skapats kör du Setup.bat från en upphöjd Visual Studio-kommandotolk för att installera Windows-tjänsten med hjälp av verktyget Installutil.exe. Tjänsten bör visas i Tjänster.

  4. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.

Se även