複数のコントラクト
MultipleContracts のサンプルでは、複数のコントラクトを 1 つのサービスに実装する方法と、実装された各コントラクトと通信を行うためにエンドポイントを構成する方法を示します。 このサンプルは、「入門サンプル」に基づいています。 サービスは、ICalculator
コントラクトおよび ICalculatorSession
コントラクトという、2 つのコントラクトを定義するように変更されています。
Note
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。
サービス クラスは、ICalculator
と ICalculatorSession
コントラクトの両方を実装しています。 いずれかのコントラクトでセッションが必要なので、サービスは PerSession インスタンス モードを使用して、セッションの有効期間中、状態を保持します。
サービス構成は、各コントラクトを公開する 2 つのエンドポイントを定義するように変更されています。 ICalculator
エンドポイントは、basicHttpBinding
を使用してベース アドレスで公開されます。 ICalculatorSession
エンドポイントは、wsHttpBinding
属性が bindingConfiguration
に設定された BindingWithSession
を使用して、ベース アドレスまたはセッションで公開されます。次のサンプル構成を参照してください。
<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>
生成されたクライアント コードには、元の ICalculator
コントラクトと新しい ICalculatorSession
コントラクトの両方のクライアント クラスが含まれます。 クライアント構成とコードは、適切なサービス エンドポイントで各コントラクトと通信するように変更されています。
クライアントは Windows コンソール アプリケーション (.exe) です。 サービスは、インターネット インフォメーション サービス (IIS) によってホストされます。
クライアント コンソール ウィンドウには、最初に基本のエンドポイント、次にセキュリティで保護されたエンドポイントの順に、各エンドポイントに送信された操作が表示されます。
サンプルをセットアップ、ビルド、および実行するには
Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。
単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。