Dela via


Anpassad bindnings- och transportkodning

Transportexemplet visar hur du konfigurerar en anpassad bindning med olika transport- och meddelandekodningselement. En anpassad bindning definieras av en ordnad lista med diskreta bindningselement.

Anmärkning

Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.

Det här exemplet baseras på Self-Host och har ändrats för att konfigurera tre slutpunkter för att stödja HTTP-, TCP- och named pipe-transporter med anpassade bindningar. Klientkonfigurationen ändrades på liknande sätt och klientkoden ändrades för att kommunicera med var och en av de tre slutpunkterna.

Exemplet visar hur du konfigurerar en anpassad bindning som stöder en viss transport- och meddelandekodning. Detta uppnås genom att konfigurera en transport och en meddelandekodning för elementet binding . Ordningen på bindningselement är viktig för att definiera en anpassad bindning, eftersom var och en representerar ett lager i kanalstacken (se Anpassade bindningar). Det här exemplet konfigurerar tre anpassade bindningar: en HTTP-transport med textkodning, en TCP-transport med textkodning och en NamedPipe-transport med binär kodning.

Tjänstkonfigurationen definierar de anpassade bindningarna enligt följande:

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

När du kör exemplet visas åtgärdsbegäranden och svar i både tjänst- och klientkonsolfönstret. Klienten kommunicerar med var och en av de tre slutpunkterna och kommer först åt HTTP, sedan TCP och slutligen NamedPipe. Tryck på RETUR i varje konsolfönster för att stänga av tjänsten och klienten.

Bindningen namedPipeTransport stöder inte maskin-till-dator-åtgärder. Den används endast för kommunikation på samma dator. När du kör exemplet i ett scenario mellan datorer kommenterar du därför ut följande rader i klientkodfilen:

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()

Anmärkning

Om du använder Svcutil.exe för att återskapa konfigurationen för det här exemplet måste du ändra slutpunktsnamnet i klientkonfigurationen så att det matchar klientkoden.

Så här konfigurerar du, skapar och kör exemplet

  1. Kontrollera att du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C#,C++- eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.