Windows-DiensthostWindows Service Host

In diesem Beispiel wird veranschaulicht, einen Windows Communication Foundation (WCF)-Dienst in einem verwalteten Windows-Dienst gehostet wird.This sample demonstrates a Windows Communication Foundation (WCF) service hosted in a managed Windows Service. Windows-Dienste gesteuert werden, verwenden das Applet "Dienste" in Systemsteuerung und kann so konfiguriert werden, dass nach einem Neustart des Systems automatisch starten.Windows Services are controlled using the Services applet in Control Panel and can be configured to start up automatically after a system reboot. Das Beispiel besteht aus einem Clientprogramm und einem Windows-Dienstprogramm.The sample consists of a client program and an Windows Service program. Der Dienst wird als EXE-Programm implementiert und enthält seinen eigenen Hostingcode.The service is implemented as an .exe program and contains its own hosting code. In anderen Hostumgebungen, z. B. WAS (Windows Process Activation Services, Windows-Prozessaktivierungsdienste) oder IIS (Internet Information Services, Internetinformationsdienste), müssen Sie keinen Hostcode schreiben.In other hosting environments, such as Windows Process Activation Services (WAS) or Internet Information Services (IIS), it is not necessary for you to write hosting code.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The set-up procedure and build instructions for this sample are located at the end of this topic.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your computer. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WindowsService

Nach dem Erstellen muss dieser Dienst mit dem Hilfsprogramm Installutil.exe wie jeder andere Windows-Dienst installiert werden.After building this service, it must be installed with the Installutil.exe utility like any other Windows Service. Wenn Sie Änderungen am Dienst vornehmen, müssen Sie ihn zuerst mit installutil /u deinstallieren.If you are going to make changes to the service, you must first uninstall it with installutil /u. Die in diesem Beispiel enthaltenen Dateien Setup.bat und Cleanup.bat sind die Befehle zum Installieren und Starten bzw. zum Herunterfahren und Deinstallieren des Windows-Diensts.The Setup.bat and Cleanup.bat files included in this sample are the commands to install and start up the Windows Service, and to shut down and uninstall the Windows Service. Der WCF-Dienst kann nur auf Clients Antworten, wenn der Windows-Dienst ausgeführt wird.The WCF service can only respond to clients if the Windows Service is running. Wenn Sie den Windows-Dienst beenden, mithilfe des Dienste-Applets aus Systemsteuerung und führen Sie den Client ein EndpointNotFoundException Ausnahme tritt auf, wenn ein Client versucht, auf den Dienst zuzugreifen.If you stop the Windows Service by using the Services applet from Control Panel and run the client, a EndpointNotFoundException exception occurs when a client attempts to access the service. Wenn Sie den Windows-Dienst neu starten und den Client erneut ausführen, ist Kommunikation erfolgreich.If you restart the Windows Service and rerun the client, communication succeeds.

Der Dienstcode enthält eine Installerklasse, eine WCF-Dienstimplementierungsklasse die den ICalculator-Vertrag implementiert und eine Windows-Dienst-Klasse, die als Host für die Laufzeit fungiert.The service code includes an installer class, a WCF service implementation class which implements the ICalculator contract, and a Windows Service class that acts as the run-time host. Dank der Installerklasse, die von Installer vererbt ist, kann das Programm mit dem Tool Installutil.exe als ein NT-Dienst installiert werden.The installer class, which inherits from Installer, allows the program to be installed as an NT service by the Installutil.exe tool. Die Dienstimplementierungsklasse, WcfCalculatorService, ist ein WCF-Dienst, der einen grundlegenden Dienstvertrag implementiert.The service implementation class, WcfCalculatorService, is an WCF service that implements a basic service contract. Diese WCF-Dienst gehostet wird, innerhalb einer Windows-Dienstklasse namens WindowsCalculatorService.This WCF service is hosted inside a Windows Service class called WindowsCalculatorService. Damit sich die Klasse als Windows-Dienst eignet, erbt sie von ServiceBase und implementiert die OnStart(String[])-Methode und dieOnStop()-Methode.To qualify as a Windows Service, the class inherits from ServiceBase and implements the OnStart(String[]) and OnStop() methods. In OnStart(String[]) wird ein ServiceHost-Objekt für den WcfCalculatorService-Typ erstellt und geöffnet.In OnStart(String[]), a ServiceHost object is created for the WcfCalculatorService type and opened. In OnStop() wird der ServiceHost durch Aufrufen der Close(TimeSpan)-Methode des ServiceHost-Objekts geschlossen.In OnStop(), the ServiceHost is closed by calling the Close(TimeSpan) method of the ServiceHost object. Die Basisadresse des Hosts wird konfiguriert, mit der <hinzufügen > -Element, das ein untergeordnetes Element ist der <BaseAddresses >, ist ein untergeordnetes Element eines der <Host > Elements, d. ein untergeordnetes Element h. von der <Service > Element.The host's base address is configured using the <add> element, which is a child of <baseAddresses>, which is a child of the <host> element, which is a child of the <service> element.

Der Endpunkt, der definiert ist, verwendet die Basisadresse und einen <WsHttpBinding >.The endpoint that is defined uses the base address and a <wsHttpBinding>. Das folgende Beispiel zeigt die Konfiguration der Basisadresse sowie den Endpunkt, der den CalculatorService verfügbar macht.The following sample shows the configuration of the base address as well as the endpoint that exposes the 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>  

Wenn Sie das Beispiel ausführen, werden die Anforderungen und Antworten für den Vorgang im Dienst- und Clientkonsolenfenster angezeigt.When you run the sample, the operation requests and responses are displayed in both the service and client console windows. Drücken Sie die EINGABETASTE in den einzelnen Konsolenfenstern, um den Dienst und den Client zu schließen.Press ENTER in each console window to shut down the service and client.

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Nachdem die Projektmappe erstellt wurde, führen Sie Setup.bat an einer Visual Studio 2012Visual Studio 2012-Eingabeaufforderung mit erhöhten Rechten aus, um den Windows-Dienst mit dem Tool Installutil.exe zu installieren.After the solution has been built, run Setup.bat from an elevated Visual Studio 2012Visual Studio 2012 command prompt to install the Windows service using the Installutil.exe tool. Der Dienst sollte unter Dienste angezeigt werden.The service should appear in Services.

  4. Um das Beispiel in einer Einzelcomputer- oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-computer configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Siehe auchSee Also

AppFabric-Hosting und PersistenzbeispieleAppFabric Hosting and Persistence Samples