Condividi tramite


Trasporto e codifica del binding personalizzato

L'esempio Transport illustra come configurare un'associazione personalizzata con vari elementi di codifica di trasporto e messaggi. Un'associazione personalizzata è definita da un elenco ordinato di elementi di associazione discreti.

Annotazioni

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

Questo esempio è basato su Self-Host ed è stato modificato per configurare tre endpoint per supportare i trasporti HTTP, TCP e NamedPipe con associazioni personalizzate. La configurazione client è stata modificata in modo analogo e il codice client è stato modificato per comunicare con ognuno dei tre endpoint.

Nell'esempio viene illustrato come configurare un'associazione personalizzata che supporta una particolare codifica di trasporto e messaggio. Questa operazione viene eseguita configurando un trasporto e una codifica dei messaggi per l'elemento binding . L'ordinamento degli elementi di associazione è importante nella definizione di un'associazione personalizzata, perché ognuno rappresenta un livello nello stack di canali (vedere Associazioni personalizzate). In questo esempio vengono configurate tre associazioni personalizzate: un trasporto HTTP con codifica del testo, un trasporto TCP con codifica di testo e un trasporto NamedPipe con codifica binaria.

La configurazione del servizio definisce le associazioni personalizzate come indicato di seguito:

<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 si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate sia nella finestra del servizio che della console client. Il client comunica con ognuno dei tre endpoint, accedendo prima a HTTP, quindi TCP e infine NamedPipe. Premere INVIO in ogni finestra della console per spegnere il servizio e il client.

L'associazione namedPipeTransport non supporta le operazioni da computer a computer. Viene usato solo per la comunicazione nello stesso computer. Pertanto, quando si esegue l'esempio in uno scenario tra computer, impostare come commento le righe seguenti nel file di codice client:

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

Annotazioni

Se si usa Svcutil.exe per rigenerare la configurazione per questo esempio, assicurarsi di modificare il nome dell'endpoint nella configurazione client in modo che corrisponda al codice client.

Per configurare, compilare ed eseguire l'esempio

  1. Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione C#, C++o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.

  3. Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.