Partilhar via


Transporte e codificação de vinculação personalizados

O exemplo de transporte demonstra como configurar uma associação personalizada com vários elementos de codificação de transporte e mensagem. Uma ligação personalizada é definida por uma lista ordenada de elementos de ligação discretos.

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

Este exemplo é baseado no Self-Host e foi modificado para configurar três pontos de extremidade para suportar transportes HTTP, TCP e NamedPipe com ligações personalizadas. A configuração do cliente foi modificada de forma semelhante, e o código do cliente foi alterado para se comunicar com cada um dos três pontos de extremidade.

O exemplo demonstra como configurar uma associação personalizada que oferece suporte a um transporte específico e codificação de mensagem. Isso é feito configurando um transporte e uma codificação de mensagem para o binding elemento. A ordenação dos elementos de vinculação é importante na definição de uma associação personalizada, porque cada um representa uma camada na pilha de canais (consulte Ligações personalizadas). Este exemplo configura três ligações personalizadas: um transporte HTTP com codificação de texto, um transporte TCP com codificação de texto e um transporte NamedPipe com uma codificação binária.

A configuração de serviço define as ligações personalizadas da seguinte maneira:

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

Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console de serviço e do cliente. O cliente se comunica com cada um dos três pontos de extremidade, acessando primeiro HTTP, depois TCP e, finalmente, NamedPipe. Pressione ENTER em cada janela do console para desligar o serviço e o cliente.

A namedPipeTransport ligação não suporta operações máquina-a-máquina. É usado apenas para comunicação na mesma máquina. Portanto, ao executar o exemplo em um cenário entre máquinas, comente as seguintes linhas no arquivo de código do cliente:

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

Nota

Se você usar Svcutil.exe para regenerar a configuração para este exemplo, certifique-se de modificar o nome do ponto de extremidade na configuração do cliente para corresponder ao código do cliente.

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C#, C++ ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.