次の方法で共有


カスタム バインドのトランスポートとエンコード

トランスポート サンプルでは、さまざまなトランスポート要素とメッセージ エンコード要素を使用してカスタム バインドを構成する方法を示します。 カスタム バインドは、個別のバインド要素の順序付きリストによって定義されます。

このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。

このサンプルは セルフホストに基づいており、カスタム バインドを使用した HTTP、TCP、および NamedPipe トランスポートをサポートするように 3 つのエンドポイントを構成するように変更されています。 クライアント構成も同様に変更され、3 つのエンドポイントのそれぞれと通信するようにクライアント コードが変更されました。

このサンプルでは、特定のトランスポートとメッセージのエンコードをサポートするカスタム バインドを構成する方法を示します。 これを行うには、 binding 要素のトランスポートとメッセージ エンコーディングを構成します。 バインド要素の順序は、チャネル スタック内のレイヤーを表すカスタム バインドを定義する上で重要です ( カスタム バインドを参照)。 このサンプルでは、3 つのカスタム バインドを構成します。テキスト エンコードを使用した HTTP トランスポート、テキスト エンコードを使用した TCP トランスポート、バイナリ エンコードを使用した NamedPipe トランスポートです。

サービス構成では、カスタム バインドを次のように定義します。

<bindings>
    <customBinding>
        <binding name="HttpBinding" >
            <textMessageEncoding
                messageVersion="Soap12Addressing10"/>
            <httpTransport />
        </binding>
        <binding name="TcpBinding" >
            <textMessageEncoding />
            <tcpTransport />
        </binding>
        <binding name="NamedPipeBinding" >
            <binaryMessageEncoding />
            <namedPipeTransport />
        </binding>
    </customBinding>
</bindings>

サンプルを実行すると、操作の要求と応答がサービスコンソールウィンドウとクライアントコンソールウィンドウの両方に表示されます。 クライアントは 3 つのエンドポイントのそれぞれと通信し、最初の HTTP、TCP、最後に NamedPipe にアクセスします。 どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。

namedPipeTransport バインドでは、マシン間の操作はサポートされていません。 これは、同じコンピューター上の通信にのみ使用されます。 そのため、クロスマシン シナリオでサンプルを実行する場合は、クライアント コード ファイルで次の行をコメント アウトします。

CalculatorClient client = new CalculatorClient("default");
Console.WriteLine("Communicate with named pipe endpoint.");
// Call operations.
DoCalculations(client);
//Closing the client gracefully closes the connection and cleans up resources
client.Close();
Dim client As New CalculatorClient("default")
Console.WriteLine("Communicate with named pipe endpoint.")
' call operations
DoCalculations(client)
'Closing the client gracefully closes the connection and cleans up resources
client.Close()

Svcutil.exe を使用してこのサンプルの構成を再生成する場合は、クライアント構成のエンドポイント名をクライアント コードと一致するように変更してください。

サンプルを設定、ビルド、実行するには

  1. Windows Communication Foundation サンプル One-Time セットアップ手順を実行していることを確認します。

  2. ソリューションの C#、C++、または Visual Basic .NET エディションをビルドするには、「 Windows Communication Foundation サンプルのビルド」の手順に従います。

  3. 単一または複数のコンピューター間の構成でサンプルを実行するには、「Windows Communication Foundation Samplesの実行」の手順に従います。