Udostępnij za pośrednictwem


Host usługi systemu Windows

Przykład WindowsService przedstawia usługę Windows Communication Foundation (WCF) hostowaną w zarządzanej usłudze systemu Windows. Usługi systemu Windows są kontrolowane za pomocą apletu Usługi w Panelu sterowania i można skonfigurować do automatycznego uruchamiania po ponownym uruchomieniu systemu. Przykład składa się z programu klienckiego i programu usługi systemu Windows. Usługa jest implementowana jako program .exe i zawiera własny kod hostingu. W innych środowiskach hostingu, takich jak Windows Process Activation Services (WAS) lub Internet Information Services (IIS), nie jest konieczne pisanie kodu hostingu.

Uwaga / Notatka

Procedura konfiguracji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Po utworzeniu tej usługi należy ją zainstalować za pomocą narzędzia Installutil.exe, takiego jak każda inna usługa systemu Windows. Jeśli zamierzasz wprowadzić zmiany w usłudze, musisz najpierw odinstalować ją za pomocą polecenia installutil /u. Pliki Setup.bat i Cleanup.bat zawarte w tym przykładzie to polecenia służące do instalowania i uruchamiania usługi systemu Windows oraz zamykania i odinstalowywania usługi systemu Windows. Usługa WCF może reagować tylko na klientów, jeśli usługa systemu Windows jest uruchomiona. Jeśli zatrzymasz usługę systemu Windows przy użyciu apletu Usługi z Panelu sterowania i uruchomisz klienta, EndpointNotFoundException wystąpi wyjątek, gdy klient próbuje uzyskać dostęp do usługi. Jeśli uruchomisz ponownie usługę systemu Windows i ponownie uruchomisz klienta, komunikacja powiedzie się.

Kod usługi zawiera klasę instalatora, klasę implementującą usługę WCF, która realizuje kontrakt ICalculator, oraz klasę Windows Service, która działa jako host w czasie wykonywania. Klasa instalatora, która dziedziczy z Installer, umożliwia zainstalowanie programu jako usługi NT za pomocą narzędzia Installutil.exe. Klasa implementacji usługi, WcfCalculatorService, jest usługą WCF, która implementuje podstawowy kontrakt usługi. Ta usługa WCF jest hostowana w klasie usługi systemu Windows o nazwie WindowsCalculatorService. Aby klasa mogła działać jako usługa systemu Windows, musi dziedziczyć z ServiceBase i implementować metody OnStart(String[]) i OnStop(). W OnStart(String[]) tworzony jest obiekt ServiceHost dla typu WcfCalculatorService i jest on otwierany. W OnStop(), ServiceHost jest zamykany przez wywołanie metody Close(TimeSpan) na obiekcie ServiceHost. Adres podstawowy hosta jest skonfigurowany przy użyciu <elementu add> , który jest elementem podrzędnym <baseAddresses>, który jest elementem podrzędnym <elementu hosta> , który jest elementem podrzędnym <elementu usługi> .

Zdefiniowany punkt końcowy używa adresu podstawowego <i elementu wsHttpBinding>. Poniższy przykład przedstawia konfigurację adresu podstawowego oraz punkt końcowy, który uwidacznia aplikację 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>

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknach konsoli usługi i klienta. Naciśnij ENTER w każdym oknie konsoli, aby zamknąć usługę i klienta.

Aby skonfigurować, skompilować i uruchomić przykładowy program

  1. Upewnij się, że wykonano procedurę instalacji One-Time dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w Kompilowanie przykładów Windows Communication Foundation.

  3. Po utworzeniu rozwiązania uruchom Setup.bat z poziomu wiersza polecenia programu Visual Studio z podwyższonym poziomem uprawnień, aby zainstalować usługę systemu Windows przy użyciu narzędzia Installutil.exe. Usługa powinna być wyświetlana w sekcji Usługi.

  4. Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.

Zobacz także