Mehrere VerträgeMultiple Contracts

Das Beispiel zu mehreren Verträgen zeigt, wie mehr als ein Vertrag für einen Dienst implementiert wird und wie Endpunkte zur Kommunikation mit den einzelnen implementierten Verträgen konfiguriert werden.The Multiple Contracts sample demonstrates how to implement more than one contract on a service and how to configure endpoints for communicating with each of the implemented contracts. Dieses Beispiel basiert auf der Einstieg.This sample is based on the Getting Started. Der Dienst wurde so geändert, dass zwei Verträge definiert sind – der ICalculator-Vertrag und der ICalculatorSession-Vertrag.The service has been modified to define two contracts, the ICalculator contract and the ICalculatorSession contract.

Hinweis

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

Die Dienstklasse implementiert sowohl den ICalculator-Vertrag als auch den ICalculatorSession-Vertrag.The service class implements both the ICalculator and ICalculatorSession contracts. Da für einen der Verträge eine Sitzung erforderlich ist, verwendet der Dienst den PerSession-Instanzmodus, um den Status während der Lebensdauer der Sitzung zu verwalten.Because one of the contracts requires a session, the service uses the PerSession instance mode to maintain the state over the lifetime of the session.

Die Dienstkonfiguration wurde so geändert, dass nun zwei Endpunkte definiert sind, um jeden der beiden Verträge zugänglich zu machen.The service configuration has been modified to define two endpoints to expose each contract. Der ICalculator-Endpunkt wird an der Basisadresse mit einer basicHttpBinding verfügbar gemacht.The ICalculator endpoint is exposed at the base address using a basicHttpBinding. Der ICalculatorSession-Endpunkt wird an der Basisadresse/in der Sitzung mit einer wsHttpBinding verfügbar gemacht, wobei für das bindingConfiguration-Attribut BindingWithSession festgelegt ist, wie in der folgenden Beispielkonfiguration gezeigt.The ICalculatorSession endpoint is exposed at the baseaddress/session using a wsHttpBinding with the bindingConfiguration attribute set to BindingWithSession, as shown in the following sample configuration.

<service   
    name="Microsoft.ServiceModel.Samples.CalculatorService"  
    behaviorConfiguration="CalculatorServiceBehavior">  
  <!-- ICalculator endpoint is exposed using BasicBinding at the base  
       address provided by host:   
       http://localhost/servicemodelsamples/service.svc  -->  
  <endpoint address=""  
            binding="basicHttpBinding"  
            contract="Microsoft.ServiceModel.Samples.ICalculator" />  
  <!-- ICalculatorSession endpoint is exposed using BindingWithSession  
       at {baseaddress}/session:  
       http://localhost/servicemodelsamples/service.svc/session -->  
  <endpoint address="session"  
            binding="wsHttpBinding"  
            bindingConfiguration="BindingWithSession"   
           contract="Microsoft.ServiceModel.Samples.ICalculatorSession" />  
  ...  
</service>  

Der generierte Clientcode enthält nun eine Clientklasse für den ursprünglichen ICalculator-Vertrag und für den neuen ICalculatorSession-Vertrag.The generated client code now includes a client class for both the original ICalculator contract and the new ICalculatorSession contract. Die Clientkonfiguration und der Code wurden geändert, um mit jedem Vertrag am entsprechenden Dienstendpunkt zu kommunizieren.The client configuration and code have been modified to communicate with each contract at the appropriate service endpoint.

Der Client ist eine Konsolen-Windows-Anwendung (.exe).The client is a console windows application (.exe). Der Dienst wird von IIS (Internet Information Services, Internetinformationsdienste) gehostet.The service is hosted by Internet Information Services (IIS).

Das Clientkonsolenfenster zeigt die an jeden Endpunkt gesendeten Vorgänge an (zuerst den Basisendpunkt, dann den sicheren Endpunkt).The client console window displays the operations sent to each of the endpoints, first the basic endpoint, followed by the secure endpoint.

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. Um das Beispiel in einer einzelnen 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-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. 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, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.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)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\MultipleContracts

Siehe auchSee Also