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.
Hinweis: |
---|
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
Stellen Sie sicher, dass Sie die Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.
Zum Erstellen der C#- oder Visual Basic .NET-Edition der Projektmappe befolgen Sie die unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den unter Running the Windows Communication Foundation Samples aufgeführten Anweisungen.
Hinweis: |
---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\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)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<Installationslaufwerk>:\WF_WCF_Samples\WCF\Basic\Services\MultipleContracts
|