Россия, г. Москва |
Промежуточная среда веб служб ASP.NET
7.1. Введение в веб службы
Веб службой или веб-сервисом ( web service, WS ) называется программная компонента, предоставляющая сервис удаленного вызова на основе группы стандартов WSI ( Web Services Interoperability ), основными из которых являются протокол обмена сообщениями SOAP, язык описания интерфейса WSDL, HTTP как основной транспортный протокол, а также XML и схемы XML. Для описания спецификаций формата сообщений в веб службах в настоящее время обычно используется схема XML и кодирование тела пакета SOAP Document.
Служба ASP.NET организует на основе данных стандартов сервис удаленного вызова методов объектов. ASP.NET создает и публикует WSDL описание веб службы на основе интерфейса класса .NET, обрабатывает приходящие от клиентов сообщения SOAP, вызывает методы объекта с извлеченными из сообщений SOAP параметрами, а затем передает клиенту сообщение с результатом выполнения метода (рис. 7.1). Таким образом, полное название промежуточной среды – веб службы ASP.NET.
Хотя с точки зрения прикладного разработчика использование веб службы представляется вариантом удаленного вызова через интернет, в основе веб служб лежит расширяемая технология обмена сообщениями SOAP, независимая от транспортного уровня. В частности, существуют стандарты, описывающие маршрутизацию сообщений SOAP, что придает веб службам признаки среды обмена сообщениями. Благодаря гибкой технологии возможно расширение промежуточной среды веб служб как по мере принятия новых стандартов, так и при необходимости в нестандартной обработке пакетов SOAP. Это возможно за счет фильтров SOAP, которые образуют трубопровод (pipeline), обрабатывающий пакеты SOAP. На платформе .NET Framework 2.0 за преобразование пришедшего по HTTP сообщения SOAP в вызов метода веб службы отвечает служба ASP.NET, а за организацию расширяемого набора фильтров SOAP – расширение, называемое WSE ( Web Service Enhancements ). В качестве приложения носителя для ASP.NET, получающего сообщение по транспортному протоколу, обычно используется служба Microsoft Internet Information Services, IIS (рис. 7.2).
При использовании WSE 3.0 возможно создание веб служб поверх протокола TCP без применения IIS. В "Обеспечение безопасности распределенных систем в .NET Framework" так же приведен пример использования ASP.NET без использования IIS.
Клиентом веб службы ASP.NET может быть компонента, созданная на .NET Framework, или любая другая компонента, использующая требуемый сервисом набор стандартов веб служб. При использовании .NET Framework на основе WSDL описания сервиса специальные утилиты создают класс посредника веб службы, который используется клиентом сервиса. Таким же образом создаются на .NET Framework и клиенты веб сервисов, отличных от веб служб ASP.NET. Кроме того, в наиболее известной альтернативной реализации CLI – проекте Mono – в настоящий момент присутствует поддержка страниц и веб служб ASP.NET (версии 1.1 и частично 2.0) для серверов Apache и XSP.
Веб службы нашли широкое применение как средство построения распределенных гетерогенных приложений. В настоящее время разрабатываются все новые стандарты, связанные с веб службами, но не все еще имеют свою реализацию в виде, пригодном для промышленного применения. В частности, это касается стандартов WS Transaction и WS-BusinessActivity, которые дают возможность использовать распределенные транзакции, включающее в себя несколько веб служб. В настоящий момент эти стандарты только утверждаются, и будут реализованы, в частности, в .NET Framework 3.0. В настоящее же время веб службы ASP.NET могут являться только корневым объектом транзакции, но не могут участвовать в транзакциях, начатых их клиентом.
Широкое практическое применение веб служб привело и к тому, что некоторые связанные с ними стандарты уже устарели или не нашли столь широкого применения, как ожидалось. Прежде всего это касается стандарта UDDI ( Universal Description, Discovery, and Integration ), который является частью WS I и предназначается для поиска удаленных веб служб на основе создания соответствующих каталогов сервисов. Для построения сервера с каталогом веб служб можно использовать Microsoft Windows 2003 или систему на основе J2EE. Несколько крупных и известных компаний поддерживали публичные каталоги веб сервисов, однако эта инициатива была закрыта в конце 2005 года. Хотя идея поиска веб служб считалась одной из основополагающих, в настоящий момент нет публичных каталогов веб служб, а для развертывания даже в пределах крупных предприятий достаточно сложная спецификация UDDI представляется избыточной. Можно заключить, что на практике идея каталогов веб служб не нашла ожидаемого применения.