Udostępnij za pośrednictwem


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

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. 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.

  3. 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.