27. Язык описания Web - сервисов WSDL (Web Services Description Language)
WSDL – язык, основанный на XML, используемый для создания документов, которые содержат важную информацию о том, как Web-сервисы могут быть расположены и работать.
Когда говорят о публикации Web-сервиса, имеется в виду программа, публикующая файл WSDL и позволяющая иным программам пользоваться соответствующим сервисом. Программы, публикующие Web-сервисы, называются провайдерами. Говоря об использовании Web-сервиса, имеется в виду программа, отправляющая вызов к Web-сервису на другой машине. Пользователи Webсервисов называются клиентами.
В документе WSDL определяется web-сервис с помощью следующих основных элементов:
<portType>
Методы, предоставляемые web-сервисом<message>
Сообщения, используемые web-сервисом<types>
Типы данных, используемые web-сервисом<binding>
Протоколы связи, используемые 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)
Операция может послать сообщение, но не будет ожидать ответ