Разработка распределенных приложений в Microsoft.NET Framework

       

Использование расширения WSE


Для расширения функциональности веб служб ASP.NET служит надстройка WSE. WSE 3.0 позволяет так же создавать безопасные службы без использования IIS, используя любое приложение в качестве носителя, но при этом выбор транспортного протокола ограничен протоколом TCP. Установка WSE приводит к созданию гибкой настраиваемой промежуточной среды для использования веб сервисов, что позволяет как использовать дополнительные стандарты, так и реализовывать нестандартные расширения благодаря SOAP фильтрам, обрабатывающих передаваемые между клиентом и сервером пакеты SOAP. Последовательность фильтров образует трубопровод (pipeline), рис. 7.3.


Рис. 7.3.  Архитектура WSE

Основное достоинство WSE заключается в отделении политики доступа (policy) к веб службе от самой службы. Политика обычно является набором требований и ограничений для клиента веб службы. Политика включает в себя те или иные расширения (assertions или extensions), а также ограничивает доступ идентифицированных пользователей к службе с помощью списка управления доступа. Каждое из расширений WSE может создавать один или два фильтра (для исходящих и входящих пакетов) как на клиенте, так и на сервере (при наличии сборки с расширением на обеих сторонах обмена).

Политика доступа к веб службе может изменяться администратором системы через конфигурационные файлы (рис. 7.4). Как на клиенте, так и на сервере политика хранится в отдельном файле (по умолчанию wse3policyCache.config), а в файле конфигурации клиента или службы (web.config) указывается ссылка на нее. Данные файлы можно редактировать при помощи утилиты WseConfigEditor3.exe или вручную.


Рис. 7.4.  Конфигурация WSE

Далее приведен пример файла конфигурации web.config при использовании WSE. Раздел <system.web><webServices><soapServerProtocolFactory> включает WSE в цепочку обработки сообщений SOAP. Раздел <microsoft.web.services3><diagnostics> позволят вести журнал всех принятых и отправленных пакетов, что может быть полезно на этапе тестирования.


<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <webServices> <soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </webServices> <compilation debug="false"> <assemblies> <add assembly="Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies> </compilation> </system.web> <microsoft.web.services3> <diagnostics> <trace enabled="true" input="C:\Inetpub\logs\InputTrace.webinfo" output="C:\Inetpub\logs\OutputTrace.webinfo" /> </diagnostics> <policy fileName="wse3policyCache.config" /> </microsoft.web.services3> </configuration> Файл политики будет подробнее рассмотрен далее в примере создания собственных расширений и фильтров.


Содержание раздела