Delen via


Aangepaste verbindingsmiddelen en codering

Het voorbeeld Transport laat zien hoe u een aangepaste binding configureert met verschillende transport- en berichtcoderingselementen. Een aangepaste binding wordt gedefinieerd door een geordende lijst met discrete bindingselementen.

Opmerking

De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.

Dit voorbeeld is gebaseerd op de self-host en is gewijzigd om drie eindpunten te configureren ter ondersteuning van HTTP-, TCP- en NamedPipe-transporten met aangepaste bindingen. De clientconfiguratie is op dezelfde manier gewijzigd en de clientcode is gewijzigd om te communiceren met elk van de drie eindpunten.

In het voorbeeld ziet u hoe u een aangepaste binding configureert die ondersteuning biedt voor een bepaalde transport- en berichtcodering. Dit wordt bereikt door het configureren van een transport en een berichtcodering voor het binding element. De volgorde van bindingselementen is belangrijk bij het definiëren van een aangepaste binding, omdat elk een laag in de kanaalstack vertegenwoordigt (zie Aangepaste bindingen). In dit voorbeeld worden drie aangepaste bindingen geconfigureerd: een HTTP-transport met tekstcodering, een TCP-transport met tekstcodering en een NamedPipe-transport met een binaire codering.

De serviceconfiguratie definieert de aangepaste bindingen als volgt:

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

Wanneer u het voorbeeld uitvoert, worden de bewerkingsaanvragen en -antwoorden weergegeven in zowel het service- als clientconsolevenster. De client communiceert met elk van de drie eindpunten en krijgt eerst toegang tot HTTP, vervolgens tot TCP, en tot slot tot Named Pipe. Druk in elk consolevenster op Enter om de service en client af te sluiten.

De namedPipeTransport binding biedt geen ondersteuning voor machine-naar-machine-bewerkingen. Deze wordt alleen gebruikt voor communicatie op dezelfde computer. Als u het voorbeeld uitvoert in een scenario voor meerdere machines, markeert u daarom de volgende regels in het clientcodebestand:

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

Opmerking

Als u Svcutil.exe gebruikt om de configuratie voor dit voorbeeld opnieuw te genereren, moet u de eindpuntnaam in de clientconfiguratie wijzigen zodat deze overeenkomt met de clientcode.

Het voorbeeld instellen, compileren en uitvoeren

  1. Zorg ervoor dat u de One-Time Setup Procedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

  2. Als u de C#-, C++- of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.

  3. Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Windows Communication Foundation-voorbeelden uitvoeren.