Freigeben über


Mehrere Verträge

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. Dieses Beispiel basiert auf dem Beispiel 'Erste Schritte'. Der Dienst wurde so geändert, dass zwei Verträge definiert sind – der ICalculator-Vertrag und der ICalculatorSession-Vertrag.

Tipp

Die Setupprozedur und Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

Die Dienstklasse implementiert sowohl den ICalculator-Vertrag als auch den ICalculatorSession-Vertrag. 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.

Die Dienstkonfiguration wurde so geändert, dass nun zwei Endpunkte definiert sind, um jeden der beiden Verträge zugänglich zu machen. Der ICalculator-Endpunkt wird an der Basisadresse mit einer basicHttpBinding verfügbar gemacht. 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.

<service 
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <!-- ICalculator endpoint is exposed using BasicBinding at the base
       address provided by host: 
       https://localhost/servicemodelsamples/service.svc  -->
  <endpoint address=""
            binding="basicHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <!-- ICalculatorSession endpoint is exposed using BindingWithSession
       at {baseaddress}/session:
       https://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. Die Clientkonfiguration und der Code wurden geändert, um mit jedem Vertrag am entsprechenden Dienstendpunkt zu kommunizieren.

Der Client ist eine Konsolen-Windows-Anwendung (.exe). Der Dienst wird von IIS (Internet Information Services, Internetinformationsdienste) gehostet.

Das Clientkonsolenfenster zeigt die an jeden Endpunkt gesendeten Vorgänge an (zuerst den Basisendpunkt, dann den sicheren Endpunkt).

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Stellen Sie sicher, dass Sie die Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Zum Erstellen der C#- oder Visual Basic .NET-Version der Lösung folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer oder computerübergreifend ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.