Консалтинг и автоматизация в области управления
эффективностью банковского бизнеса

Журнал ВРМ World

Что нового в WSDL 2.0

Как известно, одним из направлений деятельности международного консорциума W3C является программа по разработке и продвижению технологий Web-сервисов (Web Services Activity), в рамках которой рабочая группа Web Services Description занимается определением языка описания Web-сервисов и возможных способов взаимодействия с сервисами. 26 марта 2004г. рабочая группа обнародовала черновой вариант спецификации WSDL 2.0. Это событие можно расценить как переломный момент в истории развития языка WSDL. В этой статье рассказывается о изменениях, которые были внесены в спецификацию WSDL 1.1, и о том, что было улучшено в новой версии языка WSDL.

Рабочие варианты спецификаций W3C WSDL 2.0

В соответствии поставленными задачами, рабочая группа опубликовала на сайте W3C рабочие варианты следующих основных спецификаций языка WSDL:

Кроме того рабочая группа выпустила документы, в которых описываются требования, предъявляемые к описанию Web-сервисов, и сценарии использования языка WSDL:

W3C XML-схему языка WSDL 2.0 можно найти на сайте консорциума: http://www.w3.org/2003/11/wsdl/.

В редакторской версии приведенных выше документов содержится информация о ходе работ над этими спецификациями.

Отличия WSDL 2.0 от языка версии 1.1

В связи со значительностью изменений, внесенные в версию языка 1.1, WSDL 1.1 был переименован в WSDL 2.0. Ниже перечислены основные изменения:

  • В язык WSDL добавлена дополнительная семантика, что явилось одной из причин, почему атрибут targetNamespace элемента definitions стал обязательным.
  • Удалены конструкции сообщений. Теперь они задаются в элементе types при помощи системы типов XML-схемы.
  • Отсутствует поддержка перегрузки операторов.
  • Элемент portType переименован как interface. Поддержка наследования элемента interface достигается благодаря использованию атрибута extends в элементе interface.
  • Элемент port переименован в endpoint.

Концептуальная модель WSDL 2.0

Описание Web-сервиса можно разделить на две части. В абстрактной части описания Web-сервис описывается в языке WSDL с помощью системы типов, обычно W3C XML-схемы, в терминах сообщений, которые этот сервис отправляет и получает. Шаблоны обмена сообщениями определяют последовательность и количество сообщений. Элемент operation связывает шаблоны обмена сообщениями с одним или несколькими сообщениями. Элемент interface группирует операции (элементы operation) независимо от транспорта и способа доставки.

В конкретной части описания элементы binding задают транспорт и формат доставки для интерфейсов (элементов interface). Элемент сервиса (элемента service) endpoint связывает сетевой адрес в соответствие со связыванием (элементом binding). Наконец, элемент service группирует конечные точки (элементы endpoint), которые реализуют общий интерфейс (элемент interface). На рисунке 1 изображена концептуальная модель компонентов WSDL.



Рис. 1. Концептуальная модель WSDL

Компоненты WSDL

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

Листинг 1. Скелет WSDL 2.0

<definitions targetNamespace=â€xs:anyURIâ€>
<documentation /> ?
[<import /> | <include /> ] *
<types /> ?
[<interface /> | <binding /> | <service /> ] *
</definitions>

definitions

Элемент definitions является корневым элементов любого документа WSDL. Он используется в качестве контейнера, в котором содержится вся необходимая информация о данной услуге и ее атрибутах. На рисунке 2 приведена схема элемента definitions. Атрибут targetNamespace этого элемента является обязательным атрибутом типа anyURI. Это пространство имен может напрямую или косвенно определять семантику WSDL. Кроме того у элемента definitions могут быть другие необязательные атрибуты, соответствующие различным пространствам имен, которые могут использоваться в документе WSDL.


Рис. 2. Схема элемента definitions

include

Элемент include предназначен для разделения описаний Web-сервиса на модули - различные компоненты описаний сервисов из одного и того же пространства имен могут находиться в другом документе WSDL, которой можно использовать в описаниях Web-сервисов. Атрибут location является обязательным, он задает нахождение этих документов WSDL. Фактическое значение пространства имен добавляемого документа WSDL должно соответствовать целевому пространству имен элемента definitions в документе WSDL, в который добавляется первый документ. На рисунке 3 приведена схема элемента include.


Рис. 3. Схема элемента include

import

По своему назначению элемент import очень похож на элемент include, с тем исключением, что импортированный документ WSDL может относиться к другому целевому пространству имен. Атрибут namespace этого элемента является обязательным, а атрибут location - необязательным. На рисунке 4 приведена схема элемента import.



Рис. 4. Схема элемента import

types

Элемент types определяет типы данных, которые используются при обмене сообщениями. Язык WSDL использует W3C XML-схему в качестве предпочтительного языка схемы. WSDL может использовать и другие системы, например, DTD и RELAX NG. Чтобы воспользоваться схемами, их необходимо импортировать или внедрять в элементе types документа WSDL. Для импортирования используется конструкция xs:import, а для внедрения - xs:schema. Импортированные или внедренные компоненты схемы в документе WSDL указываются по QName. На рисунке 5 приведена схема элемента types.


Рис. 5. Схема элемента types

interface

Элемент interface содержит поименованный набор абстрактных операций и сообщений. При необходимости он может расширять один или несколько других элементов interface. Элементы interface в других компонентах, как, например, binding, указываются по QName. Элемент interface содержит элемент operation, атрибуты name и pattern которого является обязательными, а style - необязательным. На рисунке 5 приведена схема элемента interface. Элементы feature определяют функциональные возможности, связанные с обменом сообщениями между общающимися сторонами, что включает сведения о надежности, безопасности, зависимостях и маршрутизации. Элемент property используется для управления поведением элемента feature. Ряд возможных и допустимых значений этого элемента задается указаниями на описание схемы. Эти значения могут использоваться в нескольких элементах feature.


Рис. 6. Схема элемента interface

binding

Элемент binding определяет базовый транспорт и формат передачи для сообщений. Каждый элемент binding в документе WSDL указывает на элемент interface. Все элементы operation, определенные в элементе interface, должны быть связаны с этим binding. Элемент endpoint в компоненте service указывает элемент binding. И элементы endpoint, и элементы binding созданы для обеспечения гибкости и прозрачности местоположения. Многочисленные элементы endpoint с различным сетевым адресом могут использовать одну и ту же протокол, определенный в binding. В спецификации "WSDL 2.0, Связывания" определяются расширения элемента binding для таких протоколов и форматов сообщений, как SOAP, HTTP и MIME. На рисунке 7 приведена схема элемента binding.


Рис. 7. Схема элемента binding

service

Элемент service описывает набор элементов endpoint, которые указывают на одиночный сетевой адрес для элемента binding. Вся другая информация о протоколе сдержится в элементе binding. К элементу service можно обратиться по Qname. У этого элемента есть обязательные атрибуты name и interface. На рисунке 8 приведена схема элемента service.


Рис. 8. Схема элемента service

Шаблоны обмена сообщениями WSDL

Шаблоны обмена сообщениями определяют последовательность и число сообщений в одной операции (элементе operation). В спецификации Web Services Description Language (WSDL) Version 2.0 Part 2: Message Patterns ("Язык описания Web-сервисов (язык WSDL), версия 2.0, часть 2: Шаблоны сообщений") описывается несколько типов шаблонов сообщений. Шаблоны обмена сообщениями используют правила генерации неисправностей, предназначенные для оповещения о возникновении неисправностей. Обмен сообщениями может быть прерван, если генерация неисправностей происходит независимо от набора стандартных правил. Следующий набор стандартных правил кратко описывает поведение при возникновении ошибок.

  • ошибка замещает сообщение (Fault Replaces Messages);
  • сообщение вызывает ошибку (Message Triggers Fault);
  • ошибок нет (No Faults).

На рисунке 9 показаны эти различные шаблоны обмена сообщениями со схемами обработки ошибок.



Рис. 9. Шаблоны обмена сообщениями WSDL

Описание сервиса, предназначенного для передачи информации о котировках акций, на WSDL 1.1 и WSDL 2.0

В этом разделе кратко рассмотрен простой сервис, предназначенный для передачи информации о котировках акций. В Листинге 2 представлены типы XML-схемы, которые используются в описании этого сервиса. Листинги 3 и 4 - описание интерфейса сервиса на WSDL 1.1 и WSDL 2.0, соответственно, листинги 5 и 6 - описание реализации сервиса на WSDL 1.1 и WSDL 2.0.

Заключение

В этой статье были рассмотрены некоторые положения рабочих вариантов спецификаций языка WSDL 2.0. Необходимо отметить, что члены рабочей группы в настоящий момент заняты обсуждением дополнительных функциональных возможностей, которые могут быть добавлены в нынешние спецификации с целью создания гибкого и надежного языка описания Web-сервисов. Некоторые из этих функциональностей включают ссылки на Web-сервис, управление версиями, атрибуты и компоновщики. Кроме того, предусмотрено дальнейшее усовершенствование существующих спецификаций. Сообщество разработчиков надеется увидеть в ближайшем будущем более стабильную версию спецификации языка WSDL 2.0.

Ресурсы