Транспорт и кодировка пользовательской привязки
В примере транспорта показано, как настроить пользовательскую привязку с различными элементами кодирования транспорта и сообщений. Пользовательская привязка определяется упорядоченным списком отдельных элементов привязки.
Примечание.
Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.
Этот пример основан на локальном узле и был изменен для настройки трех конечных точек для поддержки транспорта HTTP, TCP и NamedPipe с настраиваемыми привязками. Конфигурация клиента была изменена аналогичным образом, а код клиента изменен для взаимодействия с каждой из этих трех конечных точек.
Этот образец демонстрирует, как настроить пользовательскую привязку, поддерживающую определенные транспорт и кодирование сообщений. Это достигается путем настройки транспорта и кодирования сообщений для элемента binding
. Порядок элементов привязки важен при определении пользовательской привязки, так как каждый представляет слой в стеке каналов (см . настраиваемые привязки). В этом образце настраиваются три пользовательские привязки: транспорт HTTP с текстовым кодированием, транспорт TCP с текстовым кодированием и транспорт 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, измените имя конечной точки в конфигурации клиента, чтобы оно соответствовало клиентскому коду.
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Чтобы создать выпуск решения C#, C++или Visual Basic .NET, выполните инструкции по созданию примеров Windows Communication Foundation.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".