Aangepast binding transport 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.
Notitie
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, toegang tot eerste HTTP, vervolgens TCP en tot slot NamedPipe. 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()
Notitie
Als u Svcutil.exe gebruikt om de configuratie voor dit voorbeeld opnieuw te genereren, moet u de naam van het eindpunt in de clientconfiguratie wijzigen zodat deze overeenkomt met de clientcode.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
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.
Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.