WSDL - что это: описание, структура и способы создания

WSDL - язык описания веб-сервисов, позволяющий автоматизировать взаимодействие приложений. Давайте разберемся, что представляет собой WSDL, какова его структура и основные элементы.

Что такое WSDL и зачем он нужен

WSDL (Web Services Description Language) - это язык описания веб-сервисов на основе XML. Он определяет интерфейс для взаимодействия клиентских приложений с веб-сервисом.

Основные задачи WSDL:

  • Описание функциональности веб-сервиса
  • Определение типов данных для входных и выходных параметров
  • Указание способа доступа и взаимодействия с сервисом

Благодаря WSDL клиент может получить всю необходимую информацию для работы с веб-сервисом и вызова его методов. Это значительно упрощает интеграцию и совместное использование различных приложений.

Структура и элементы описания WSDL

Документ WSDL состоит из следующих логических блоков:

  1. Types - определение типов данных
  2. Message - абстрактное описание данных
  3. Operation - операция веб-сервиса
  4. Port Type - набор операций
  5. Binding - протокол передачи данных
  6. 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-документа обычно включает следующие шаги:

  1. Проектирование и реализация сервиса
  2. Описание типов данных в блоке Types
  3. Описание интерфейса в Port Type
  4. Создание привязок к протоколам в Binding
  5. Объявление сервиса в блоке 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/.

Комментарии