Transport i kodowanie powiązań niestandardowych
W przykładzie Transport pokazano, jak skonfigurować niestandardowe powiązanie z różnymi elementami kodowania transportu i komunikatów. Powiązanie niestandardowe jest definiowane przez uporządkowaną listę dyskretnych elementów powiązania.
Uwaga
Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.
Ten przykład jest oparty na hoście własnym i został zmodyfikowany w celu skonfigurowania trzech punktów końcowych do obsługi transportu HTTP, TCP i NamedPipe z powiązaniami niestandardowymi. Konfiguracja klienta została podobnie zmodyfikowana, a kod klienta został zmieniony tak, aby komunikował się z każdym z trzech punktów końcowych.
W przykładzie pokazano, jak skonfigurować powiązanie niestandardowe, które obsługuje określony transport i kodowanie komunikatów. Jest to realizowane przez skonfigurowanie transportu i kodowania komunikatów binding
dla elementu. Kolejność elementów powiązania jest ważna podczas definiowania powiązania niestandardowego, ponieważ każda z nich reprezentuje warstwę w stosie kanału (zobacz Powiązania niestandardowe). W tym przykładzie skonfigurowano trzy powiązania niestandardowe: transport HTTP z kodowaniem tekstu, transport TCP z kodowaniem tekstu i transport NamedPipe z kodowaniem binarnym.
Konfiguracja usługi definiuje powiązania niestandardowe w następujący sposób:
<bindings>
<customBinding>
<binding name="HttpBinding" >
<textMessageEncoding
messageVersion="Soap12Addressing10"/>
<httpTransport />
</binding>
<binding name="TcpBinding" >
<textMessageEncoding />
<tcpTransport />
</binding>
<binding name="NamedPipeBinding" >
<binaryMessageEncoding />
<namedPipeTransport />
</binding>
</customBinding>
</bindings>
Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane zarówno w oknie usługi, jak i konsoli klienta. Klient komunikuje się z każdym z trzech punktów końcowych, uzyskuje dostęp do pierwszego protokołu HTTP, a następnie TCP, a na koniec NamedPipe. Naciśnij klawisz ENTER w każdym oknie konsoli, aby zamknąć usługę i klienta.
Powiązanie namedPipeTransport
nie obsługuje operacji między maszynami. Jest on używany tylko do komunikacji na tym samym komputerze. W związku z tym podczas uruchamiania przykładu w scenariuszu między maszynami dodaj komentarz do następujących wierszy w pliku kodu klienta:
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()
Uwaga
Jeśli używasz Svcutil.exe do ponownego wygenerowania konfiguracji dla tego przykładu, pamiętaj o zmodyfikowaniu nazwy punktu końcowego w konfiguracji klienta, aby był zgodny z kodem klienta.
Aby skonfigurować, skompilować i uruchomić przykład
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Aby skompilować wersję rozwiązania W#, C++lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Kompilowanie przykładów programu Windows Communication Foundation.
Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.