Открыть сервис

WSDL

WSDL (Web Services Description Language) — это язык описания веб-сервисов на основе XML, предназначенный для формального описания интерфейсов, доступных через сеть. WSDL определяет, как обращаться к веб-сервису, какие операции он поддерживает, какие типы данных используются для обмена сообщениями и по какому сетевому протоколу (например, SOAP, HTTP) происходит взаимодействие. Стандарт разработан консорциумом W3C (World Wide Web Consortium) и является ключевым компонентом архитектуры SOA (Service-Oriented Architecture).

История и развитие

Первая версия WSDL (1.0) была предложена компаниями IBM и Microsoft в 2000 году и базировалась на более ранних форматах, таких как NASSL (IBM) и SOAP Contract Language (Microsoft). Однако эта версия не была принята W3C в качестве рекомендации. Основная версия, WSDL 1.1, была опубликована в марте 2001 года и получила широкое распространение в индустрии, став де-факто стандартом для описания веб-сервисов на основе SOAP.

В 2004 году W3C начал работу над стандартизацией WSDL 2.0, которая была завершена в 2007 году (статус W3C Recommendation). Версия 2.0 внесла значительные изменения: была упрощена модель описания, введены новые элементы для поддержки REST-подобных сервисов, улучшена поддержка не-SOAP протоколов. Однако, из-за обратной несовместимости с WSDL 1.1 и отсутствия массового перехода на новую версию, WSDL 1.1 остаётся наиболее широко используемой на практике.

Структура WSDL-документа

WSDL-документ представляет собой XML-файл, который состоит из нескольких основных элементов (в версии 1.1):

Особенности WSDL 2.0

В версии 2.0 структура была переработана: элементы <portType> и <binding> заменены на <interface> и <binding> соответственно, а <service> остаётся, но <port> заменён на <endpoint>. Кроме того, в WSDL 2.0 появилась возможность описывать сервисы, не использующие SOAP, например, RESTful сервисы на HTTP с использованием методов GET, POST, PUT, DELETE.

Принципы использования

WSDL используется для автоматической генерации кода клиентских и серверных приложений. Разработчик может взять WSDL-документ, опубликованный поставщиком сервиса, и с помощью инструментов (например, wsimport в Java или svcutil в .NET) сгенерировать заглушки для вызова операций, не вникая в детали протокола и сериализации данных.

Процесс взаимодействия с веб-сервисом на основе WSDL включает следующие шаги:

  1. Клиент получает WSDL-документ (обычно по URL, завершающемуся на ?wsdl).
  2. Клиент анализирует WSDL, определяет операции, их параметры и точки доступа.
  3. Клиент формирует SOAP-сообщение (или сообщение по другому протоколу) согласно описанию в WSDL.
  4. Сообщение отправляется на указанный endpoint.
  5. Сервер обрабатывает запрос и возвращает ответ, структура которого также задана WSDL.

Пример WSDL-документа (упрощённый)

Ниже приведён фрагмент WSDL-документа версии 1.1, описывающего простой сервис получения информации о погоде:

``xml <definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://example.com/weather">; <types> <xsd:schema targetNamespace="http://example.com/weather">; <xsd:element name="GetWeatherRequest" type="xsd:string"/> <xsd:element name="GetWeatherResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="Temperature" type="xsd:double"/> <xsd:element name="Condition" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </types> <message name="GetWeatherInput"> <part name="parameters" element="tns:GetWeatherRequest"/> </message> <message name="GetWeatherOutput"> <part name="parameters" element="tns:GetWeatherResponse"/> </message> <portType name="WeatherPortType"> <operation name="GetWeather"> <input message="tns:GetWeatherInput"/> <output message="tns:GetWeatherOutput"/> </operation> </portType> <binding name="WeatherBinding" type="tns:WeatherPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>; <operation name="GetWeather"> <soap:operation soapAction="http://example.com/weather/GetWeather"/>; <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="WeatherService"> <port name="WeatherPort" binding="tns:WeatherBinding"> <soap:address location="http://example.com/weather"/>; </port> </service> </definitions> ``

Связь с другими технологиями

WSDL тесно связан с такими стандартами, как:

Критика и альтернативы

Основные недостатки WSDL связаны со сложностью и громоздкостью XML-структуры, а также с ориентацией на SOAP-сервисы, которые в последние годы уступают позиции подходам REST и gRPC. Критики отмечают избыточность и трудоёмкость создания и сопровождения WSDL-документов вручную. Кроме того, использование WSDL часто приводит к сильной связности клиента и сервера через общие типы данных и протоколы, что противоречит принципам слабой связанности REST.

Альтернативными форматами описания сервисов являются:

Тем не менее, WSDL остаётся важным стандартом в корпоративных системах, где используются SOAP-сервисы и подходы SOA, особенно в финансовом и телекоммуникационном секторах.

Применение в России

В России WSDL применяется в промышленных интеграционных проектах, использующих платформы Oracle SOA Suite, IBM WebSphere, SAP PI/PO и другие. Также WSDL используется при описании интерфейсов государственных информационных систем, например, в рамках системы межведомственного электронного взаимодействия (СМЭВ) для описания сервисов обмена данными между органами власти.

Источники:

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →