NetHttpBinding
В образце привязки NetHttpBinding показано, как реализовать привязку, которая помещает элемент HttpTransportBindingElement или HttpsTransportBindingElement в стек поверх элемента BinaryMessageEncodingBindingElement. Системные привязки на базе протокола HTTP, входящие в состав Windows Communication Foundation (WCF), например BasicHttpBinding или WsHttpBinding, помещают протокол HTTP поверх TextMessageEncodingBindingElement в первую очередь для того, чтобы разрешить отправку и получение сообщений в текстовом формате и формате XML, тем самым сделав возможным взаимодействие. Системные привязки на базе протокола TCP и именованных каналов, входящие в состав Windows Communication Foundation (WCF), например NetTcpBinding или NetNamedPipeBinding, записывают и принимают сообщения в двоичном формате. Двоичный формат, хотя он и не поддерживает взаимодействие, является более эффективным и используется для повышения производительности.
Примечание |
---|
Процедура настройки и инструкции по построению для этого образца приведены в конце этого раздела. |
Примечание |
---|
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).
<диск_установки>:\WF_WCF_Samples
Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<диск_установки>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding
|
В этом образце показано, как с помощью архитектуры WCF объединить нужные привязки в стеке каналов и настроить их требуемым образом. Для создания пользовательской привязки выполните следующие действия.
Определите, какие из элементов привязки необходимо объединить в стек, чтобы создать привязку.
Убедитесь, что известен порядок, в котором элементы привязки следует объединять в стек, чтобы этот стек работал правильно. Например, элемент транспорта можно поместить в нижнюю часть стека.
Создайте класс Binding, наследующий классу Binding. В данном конкретном случае класс NetHttpBinding также реализует интерфейс ISecurityCapabilities, поскольку при этом пользователь этой привязки получает возможность проверять ProtectionLevel и определять, поддерживает ли привязка проверку подлинности клиента и сервера.
У привязки имеются и другие свойства, доступ к которым необходимо предоставить пользователям, чтобы они могли настраивать элементы привязки. Например, делается доступным свойство BypassProxyOnLocal, чтобы можно было настраивать аналогичное свойство соответствующего элемента TransportBindingElement HTTP или HTTPS.
В методе CreateBindingElements в этом образце показан порядок, в котором элементы привязки должны объединяться в стек. Например, сначала этот метод добавляет кодировщик, а затем транспорт, поскольку транспорт должен находиться внизу стека привязки.
Наконец, реализуется метод ApplyConfiguration, чтобы привязку NetHttpBinding можно было заполнять с помощью конфигурации. На самом деле имеется несколько других классов, необходимых для поддержки настройки привязки с помощью файла конфигурации. Для создания этих классов можно использовать средство ConfigurationCodeGenerator. Средство ConfigurationCodeGenerator также доступно в виде образца WCF.
Образец службы NetHttpBinding
Образец службы, использующей привязку NetHttpBinding, расположен в подкаталоге службы. Привязка, которая используется для настройки конечной точки, называется NetHttpBinding. Образец службы размещается резидентно с использованием метода Main, но его можно также размещать и в службах IIS.
Образец клиента NetHttpBinding
Для подключения к службе клиент также использует привязку NetHttpBinding. Клиент показывает, что привязку можно задавать как с помощью кода, так и с помощью файла конфигурации. Настройка привязки NetHttpBinding возможна с помощью файла конфигурации, поскольку были добавлены соответствующие классы, делающие привязку доступной через конфигурацию. Как было сказано ранее, для создания этих классов можно использовать средство ConfigurationCodeGenerator.
Настройка и построение образца
Установите ASP.NET 4.0, выполнив следующую команду.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Убедитесь, что выполнены действия, описанные в разделе Процедура однократной настройки образцов Windows Communication Foundation.
Чтобы построить решение, следуйте инструкциям в разделе Построение образцов Windows Communication Foundation.
Убедитесь, что путь включает папку, в которой хранится файл Makecert.exe.
На компьютере, на котором будет работать сервер, запустите из папки установки образца файл Setup.bat, чтобы создать сертификат сервера и сертификат его издателя, необходимые серверу.
На том же компьютере сервера настройте сертификат сервера с помощью файла HTTP.SYS, воспользовавшись для этого инструкциями в основном документе из раздела Настройка HTTP и HTTPS.
Выполнение образца на одном компьютере
Запустите программу Service.exe из папки service\bin. Действия службы отображаются в окне консоли службы.
Запустите программу Client.exe из \client\bin. Действия клиента отображаются в консольном приложении клиента.
После завершения работы образца запустите файл Cleanup.bat, чтобы удалить сертификаты.
Выполнение образца на нескольких компьютерах
Запустите программу Service.exe из папки service\bin. Действия службы отображаются в окне консоли службы.
Поскольку сервер размещается резидентно, необходимо указать удостоверение в файле App.config клиента, если клиент и сервер выполняются от имени пользователей домена:
<client> <endpoint name="EchoServer" address= https://localhost:8000/TestService/BinaryEncoderOverHTTP binding= "netHttpBinding" bindingConfiguration="netHttpBinding" contract= "Microsoft.ServiceModel.Samples.Client.IEchoService" > <identity> <userPrincipalName value="user_name@service_domain"/> </identity> </endpoint> </client>
Запустите файл Client.exe из папки \client\bin. В качестве параметра командной строки передайте URL-адрес HTTPS, который отображается в окне службы. Действия клиента отображаются в консольном приложении клиента.
После завершения работы образца запустите файл Cleanup.bat, чтобы удалить сертификаты.