Поделиться через


Пользовательский транспорт привязки и кодировка

В образце транспорта показано, как настроить настраиваемую привязку с различными элементами транспорта и кодирования сообщений. Пользовательская привязка определяется списком упорядоченных дискретных привязочных элементов.

Замечание

Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.

Этот пример основан на локальном узле и был изменен для настройки трех конечных точек для поддержки транспорта HTTP, TCP и NamedPipe с настраиваемыми привязками. Конфигурация клиента была аналогично изменена, и код клиента изменился для взаимодействия с каждой из трех конечных точек.

В примере показано, как настроить пользовательскую привязку, которая поддерживает определенную кодировку транспорта и сообщения. Это достигается путем настройки транспорта и кодирования сообщений для binding элемента. Порядок элементов привязки важен при определении пользовательской привязки, так как каждый представляет слой в стеке каналов (см. настраиваемые привязки). В этом примере настраиваются три пользовательские привязки: транспорт HTTP с текстовой кодировкой, транспорт TCP с текстовой кодировкой и transport NamedPipe с двоичной кодировкой.

Конфигурация службы определяет пользовательские привязки следующим образом:

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

При запуске примера запросы и ответы операции отображаются как в окне службы, так и в окне консоли клиента. Клиент взаимодействует с каждой из трех конечных точек, сначала обращаясь к точке HTTP, затем к TCP и, наконец, к NamedPipe. Нажмите клавишу ВВОД в каждом окне консоли, чтобы завершить работу службы и клиента.

Привязка namedPipeTransport не поддерживает операции "компьютер — компьютер". Он используется только для обмена данными на одном компьютере. Поэтому при запуске примера в сценарии между компьютерами закомментируйте следующие строки в файле кода клиента:

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

Замечание

Если вы используете Svcutil.exe для повторного создания конфигурации для этого примера, обязательно измените имя конечной точки в конфигурации клиента, чтобы соответствовать коду клиента.

Настройка, сборка и запуск примера

  1. Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.

  2. Чтобы создать версии решения C#, C++, или Visual Basic .NET, выполните инструкции по созданию примеров Windows Communication Foundation.

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в запуска примеров Windows Communication Foundation.