WSDL - язык описания веб-сервисов, позволяющий автоматизировать взаимодействие приложений. Давайте разберемся, что представляет собой WSDL, какова его структура и основные элементы.
Что такое WSDL и зачем он нужен
WSDL (Web Services Description Language) - это язык описания веб-сервисов на основе XML. Он определяет интерфейс для взаимодействия клиентских приложений с веб-сервисом.
Основные задачи WSDL:
- Описание функциональности веб-сервиса
- Определение типов данных для входных и выходных параметров
- Указание способа доступа и взаимодействия с сервисом
Благодаря WSDL клиент может получить всю необходимую информацию для работы с веб-сервисом и вызова его методов. Это значительно упрощает интеграцию и совместное использование различных приложений.
Структура и элементы описания WSDL
Документ WSDL состоит из следующих логических блоков:
- Types - определение типов данных
- Message - абстрактное описание данных
- Operation - операция веб-сервиса
- Port Type - набор операций
- Binding - протокол передачи данных
- Service - набор конечных точек доступа
Рассмотрим основные элементы подробнее:
Types
В блоке Types с помощью языка описания схем XML (XSD) определяются типы данных, используемые веб-сервисом. Например, строки, числа, даты, пользовательские типы данных.
Message
Элемент Message описывает формат сообщений, которыми обменивается сервис с клиентом. Обычно это входные и выходные параметры операций.
Operation
Operation определяет отдельную операцию веб-сервиса, состоящую из входного и выходного сообщений. Например, метод сложения двух чисел.
Port Type
В Port Type перечисляются все операции, предоставляемые сервисом. Набор методов, доступный для вызова.
Binding
Элемент Binding определяет протокол и формат данных для взаимодействия с веб-сервисом. Например, SOAP, HTTP GET/POST, REST.
Service
Элемент Service определяет конечные точки доступа к веб-сервису. Содержит адреса и привязки для одной или нескольких реализаций сервиса.
Что представляет собой описание WSDL
Итак, описание WSDL предоставляет всю необходимую информацию для доступа и вызова веб-сервиса: его интерфейс, типы данных, протоколы доступа. Благодаря этому клиент может узнать, какие методы доступны на сервере, как именно их вызывать и что они возвращают.
Зачем нужен язык WSDL
Основным предназначением WSDL является автоматизация взаимодействия клиентских приложений с веб-сервисами. Без описания WSDL для вызова веб-сервиса пришлось бы вручную разрабатывать soap-запросы в нужном формате. А благодаря WSDL клиентский код для доступа к сервису может быть сгенерирован автоматически.
Языки и протоколы, используемые с WSDL
WSDL часто применяется совместно с такими стандартами как:
- SOAP
- XML Schema
- HTTP
- REST
WSDL и SOAP
SOAP - это протокол обмена сообщениями на основе XML в децентрализованных средах. Совместно с WSDL он обеспечивает описание и вызов веб-сервисов по HTTP.
WSDL и XML Schema
WSDL и XML Schema
XML Schema - язык описания структуры XML-документов. Используется в WSDL для определения типов данных веб-сервиса в блоке Types.
WSDL и HTTP
HTTP - это протокол передачи данных, наиболее часто применяемый для доступа к веб-сервисам. В WSDL описываются привязки к HTTP.
Основные этапы создания описания веб-сервиса на WSDL
Процесс разработки WSDL-документа обычно включает следующие шаги:
- Проектирование и реализация сервиса
- Описание типов данных в блоке Types
- Описание интерфейса в Port Type
- Создание привязок к протоколам в Binding
- Объявление сервиса в блоке Service
Проектирование сервиса
На этом этапе определяются ключевые интерфейсы и компоненты веб-сервиса. Это необходимо для последующего описания в WSDL.
Описание типов данных
Здесь с помощью XML Schema описываются структуры данных, используемые веб-сервисом. Это позволит корректно сериализовать и десериализовать параметры.
Описание интерфейса
В этом блоке перечисляются и описываются все операции, предоставляемые веб-сервисом. Также указываются входные и выходные данные.
Создание привязок
В блоке Binding указываются протоколы и форматы данных для каждой отдельной операции, описанной в интерфейсе. Например, SOAP или REST.
Объявление сервиса
На последнем этапе в блоке Service перечисляются конечные точки доступа к веб-сервису по каждому протоколу и указываются их адреса.
Способы использования WSDL
Основные сценарии применения WSDL:
- Генерация клиентского кода
- Тестирование веб-сервисов
- Интеграция сервиса в приложение
Генерация клиентского кода
По описанию WSDL может быть автоматически сгенерирован код клиента для вызова веб-сервиса. Это значительно упрощает разработку.
Тестирование веб-сервисов
Благодаря WSDL можно программно вызывать методы веб-сервиса и проверять возвращаемые значения без доступа к его исходному коду.
Интеграция сервиса в приложение
WSDL позволяет интегрировать веб-сервис в существующую информационную систему, используя генерируемый клиентский код.
Реализация веб-сервисов на разных языках программирования
WSDL поддерживается многими платформами и языками программирования:
- Java (JAX-WS)
- .NET (WCF)
- PHP (SoapClient, NuSoap)
- Python
Веб-сервисы на Java с поддержкой WSDL
Для начала вам необходимо настроить базовый скрипт сборки. Вы можете использовать любую систему сборки, которая вам нравится для сборки проектов Spring, но в этом уроке рассмотрим код для работы с Gradle. Если вы не знакомы с ней, ознакомьтесь с соответствующим уроком Сборка Java-проекта с использованием Gradle.
В Java для разработки веб-сервисов со встроенной поддержкой WSDL используется стандарт JAX-WS. Он предоставляет аннотации для автоматической генерации описания из кода.
Веб-сервисы в .NET с поддержкой WSDL
Технология WCF в платформе .NET также позволяет создавать веб-сервисы с автоматической генерацией WSDL как из кода, так и из конфигурационных файлов.
PHP веб-сервисы и WSDL
В PHP для работы с веб-сервисами из кода чаще всего используется библиотека SoapClient. При инициализации клиента указывается WSDL-файл сервиса.
Python веб-сервисы и WSDL
SOAP расшифровывается как Simple Object Access Protocol, поскольку название предполагает не что иное, как протокол обмена структурированными данными между узлами. Он использует XML вместо JSON.
В этой статье мы увидим, как выполнять вызовы API SOAP с помощью Python.
Сначала мы импортируем библиотекузапросов, затем определяем URL-адрес SOAP.
Следующим и наиболее важным шагом является форматирование тела XML в соответствии со структурой, представленной в URL-адресе SOAP.
Затем вы просто готовите заголовки и выполняете вызов POST.
В Python есть стандартный модуль sdld, который позволяет импортировать определения из WSDL и генерировать клиентский код для доступа к веб-сервису.
Пример WSDL-документа
Давайте рассмотрим пример простого описания WSDL для веб-сервиса, предоставляющего единственный метод sayHello.
Структура WSDL-документа
Описание состоит из следующих логических блоков:
- Types - используются встроенные типы XML Schema
- Message - входные и выходные данные метода
- PortType - сам метод sayHello
- Binding - протокол SOAP через HTTP
- Service - адрес развернутого веб-сервиса
Определение типов данных
Так как используются простые строковые параметры, определение отдельных типов не требуется.
Описание интерфейса
Метод sayHello принимает строку и возвращает строку приветствия.
Создание привязок
HTTP-привязка использует функцию SOAP Web-метода, позволяющую приложениям выбирать один из так называемых Web-методов - GET или POST - чтобы использовать для обмена сообщениями с помощью HTTP.
Кроме того, она использует два шаблона обмена сообщениями, которые дают приложениям два способа обмена SOAP-сообщениями посредством HTTP: 1) использование HTTP-метода POST для передачи SOAP-сообщений в теле HTTP-запроса и HTTP-отклика, и
2)использование HTTP-метода GET в HTTP-запросе для возвращения SOAP-сообщения в теле HTTP-отклика
Для доступа используется протокол SOAP по HTTP.
Объявление сервиса
Указан адрес доступа к сервису - http://www.examples.com/SayHello/.