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 Erste Schritte. Der Dienst wurde so geändert, dass zwei Verträge definiert sind – der ICalculator
-Vertrag und der ICalculatorSession
-Vertrag.
Hinweis
Die Setupprozedur und die 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:
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. 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 können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie die Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.
Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.