27. Язык описания Web - сервисов WSDL (Web Services Description Language)

WSDL – язык, основанный на XML, используемый для создания документов, которые содержат важную информацию о том, как Web-сервисы могут быть расположены и работать.

Когда говорят о публикации Web-сервиса, имеется в виду программа, публикующая файл WSDL и позволяющая иным программам пользоваться соответствующим сервисом. Программы, публикующие Web-сервисы, называются провайдерами. Говоря об использовании Web-сервиса, имеется в виду программа, отправляющая вызов к Web-сервису на другой машине. Пользователи Webсервисов называются клиентами.

В документе WSDL определяется web-сервис с помощью следующих основных элементов:

Документ WSDL может также содержать другие элементы, например элементы расширения и элемент service, который позволяет объединить вместе в одном отдельном документе WSDL определения нескольких web-сервисов.

Порты WSDL

Элемент <portType> является наиболее важным элементом в WSDL. Он определяет сам web-сервис, предоставляемые им операции и используемые сообщения. Элемент <portType> можно сравнить с библиотекой функций (модулем, классом) в традиционном языке программирования.

Сообщения WSDL

Элемент <message> определяет элементы данных операции. Каждое сообщение может содержать одну или несколько частей. Эти части можно сравнить с параметрами вызываемых функций в традиционном языке программирования.

Типы WSDL

Элемент <types> определяет тип данных, используемых web-сервисом. Для максимальной платформо-независимости WSDL использует синтаксис XML Schema для определения типов данных.

Связи WSDL

Элемент <binding> определяет формат сообщения и детали протокола для каждого порта.

Запрос-ответ (request-response) это самый распространенный тип операций. Всего же в WSDL определено четыре типа (см. таблица):

Однонаправленный (One-way)

Операция может принимать сообщение, но не будет возвращать ответ

Запрос-ответ (Request-response)

Операция может принимать запрос и возвратит ответ

Вопрос-ответ (Solicit-response)

Операция может послать запрос и будет ждать ответ

Извещение (Notification)

Операция может послать сообщение, но не будет ожидать ответ