Язык описания веб-служб - Web Services Description Language

Язык описания веб-сервисов
WSDL.svg
Расширение имени файла
.wsdl
Тип интернет-СМИ
приложение / wsdl + xml
Разработано Консорциум World Wide Web
Содержится XML
Стандарт 2.0 Рекомендация

Web Services Description Language ( WSDL / ш ɪ г d əl / ) является XML основанное язык описания интерфейса , который используется для описания функциональных возможностей, предлагаемых в веб - службе . Акроним также используется для любого конкретного WSDL-описания веб-службы (также называемого файлом WSDL ), которое предоставляет машиночитаемое описание того, как может быть вызвана служба, какие параметры она ожидает и какие структуры данных возвращает. . Следовательно, его назначение примерно аналогично сигнатуре типа в языке программирования.

Текущая версия WSDL - WSDL 2.0. Значение аббревиатуры изменилось по сравнению с версией 1.1, где «D» означало «Определение».

Описание

Представление концепций, определенных в документах WSDL 1.1 и WSDL 2.0.

WSDL описывает службы как наборы конечных точек сети или портов . Для этой цели спецификация WSDL предоставляет формат XML для документов. Абстрактные определения портов и сообщений отделены от их конкретного использования или экземпляра, что позволяет повторно использовать эти определения. Порт определяется путем связывания сетевого адреса с повторно используемой привязкой, а набор портов определяет службу. Сообщения - это абстрактные описания данных, которыми обмениваются, а типы портов - абстрактные наборы поддерживаемых операций. Конкретные спецификации протокола и формата данных для определенного типа порта представляют собой повторно используемую привязку, в которой операции и сообщения затем привязываются к конкретному сетевому протоколу и формату сообщения. Таким образом, WSDL описывает открытый интерфейс веб-службы.

WSDL часто используется в сочетании с SOAP и XML-схемой для предоставления веб-сервисов через Интернет . Клиентская программа, подключающаяся к веб-службе, может читать файл WSDL, чтобы определить, какие операции доступны на сервере. Любые используемые специальные типы данных встраиваются в файл WSDL в форме XML-схемы. Затем клиент может использовать SOAP для фактического вызова одной из операций, перечисленных в файле WSDL, например, используя XML через HTTP .

Текущая версия спецификации - 2.0; версия 1.1 не была одобрена W3C, но версия 2.0 является рекомендацией W3C . WSDL 1.2 был переименован в WSDL 2.0 из-за его существенных отличий от WSDL 1.1. Принимая привязку ко всем методам HTTP-запроса (не только GET и POST, как в версии 1.1), спецификация WSDL 2.0 предлагает лучшую поддержку веб-служб RESTful и ее намного проще реализовать. Однако поддержка этой спецификации все еще недостаточна в наборах средств разработки программного обеспечения для веб-служб, которые часто предлагают инструменты только для WSDL 1.1. Например, версия 2.0 языка выполнения бизнес-процессов (BPEL) поддерживает только WSDL 1.1.

Срок действия WSDL 1.1 Срок действия WSDL 2.0 Описание
Услуга Услуга Содержит набор системных функций, представленных веб-протоколам.
Порт Конечная точка Определяет адрес или точку подключения к веб-службе. Обычно он представлен простой строкой URL-адреса HTTP .
Привязка Привязка Задает интерфейс и определяет стиль привязки SOAP ( RPC / Document) и транспорт ( протокол SOAP ). Раздел привязки также определяет операции.
PortType Интерфейс Определяет веб-службу, операции, которые могут быть выполнены, и сообщения, которые используются для выполнения операции.
Операция Операция Определяет действия SOAP и способ кодирования сообщения, например «буквальный». Операция похожа на вызов метода или функции в традиционном языке программирования.
Сообщение N / A Обычно сообщение соответствует операции. Сообщение содержит информацию, необходимую для выполнения операции. Каждое сообщение состоит из одной или нескольких логических частей. Каждая часть связана с атрибутом типа сообщения. Атрибут имени сообщения обеспечивает уникальное имя среди всех сообщений. Атрибут имени части обеспечивает уникальное имя среди всех частей включающего сообщения. Части - это описание логического содержания сообщения. В привязке RPC привязка может ссылаться на имя части, чтобы указать специфичную для привязки информацию о части. Часть может представлять параметр в сообщении; привязки определяют фактическое значение детали. Сообщения были удалены в WSDL 2.0, в котором типы схем XML для определения тел входов, выходов и ошибок упоминаются просто и напрямую.
Типы Типы Описывает данные. Для этой цели используется язык схемы XML (также известный как XSD ) (встроенный или связанный).

Подмножество WSDL

Подмножество WSDL (SWSDL) - это WSDL с подмножеством операций исходного WSDL. Разработчик может использовать SWSDL для доступа к подмножеству сервиса, таким образом обрабатывая подмножество кода веб-сервиса. Подмножество WSDL можно использовать для тестирования веб-сервисов и разработки сверху вниз. Нарезка веб-службы может быть выполнена с помощью WSDL подмножества для доступа к подмножеству услуг. Служба подмножества может быть разделена на уровни с помощью SWSDL. SWSDL используются для анализа, тестирования и нисходящей разработки веб-сервисов. AWSCM - это новаторский инструмент для успешного построения SWSDL.

Пример файла WSDL

<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.w3.org/ns/wsdl" 
             xmlns:tns="http://www.tmsws.com/wsdl20sample" 
             xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/"
             xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://www.tmsws.com/wsdl20sample">

<documentation>
    This is a sample WSDL 2.0 document. 
</documentation>

<!-- Abstract type -->
   <types>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns="http://www.tmsws.com/wsdl20sample"
                targetNamespace="http://www.example.com/wsdl20sample">
                 
         <xs:element name="request"> ... </xs:element>
         <xs:element name="response"> ... </xs:element>
      </xs:schema>
   </types>

<!-- Abstract interfaces -->
   <interface name="Interface1">
      <fault name="Error1" element="tns:response"/>
      <operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
   </interface>

<!-- Concrete Binding Over HTTP -->
   <binding name="HttpBinding" interface="tns:Interface1" 
            type="http://www.w3.org/ns/wsdl/http">
      <operation ref="tns:Get" whttp:method="GET"/>
   </binding>
   
<!-- Concrete Binding with SOAP-->
   <binding name="SoapBinding" interface="tns:Interface1" 
            type="http://www.w3.org/ns/wsdl/soap" 
            wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
            wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
      <operation ref="tns:Get" />
   </binding>

<!-- Web Service offering endpoints for both bindings-->
   <service name="Service1" interface="tns:Interface1">
      <endpoint name="HttpEndpoint" 
                binding="tns:HttpBinding" 
                address="http://www.example.com/rest/"/>
      <endpoint name="SoapEndpoint" 
                binding="tns:SoapBinding" 
                address="http://www.example.com/soap/"/>
   </service>
</description>

История

WSDL 1.0 (сентябрь 2000 г.) был разработан IBM , Microsoft и Ariba для описания веб-служб для их набора инструментов SOAP. Он был построен путем объединения двух языков описания служб: NASSL ( язык спецификации служб сетевых приложений) от IBM и SDL (язык описания служб) от Microsoft.

WSDL 1.1, опубликованный в марте 2001 года, является формализацией WSDL 1.0. Никаких серьезных изменений между 1.0 и 1.1 внесено не было.

WSDL 1.2 (июнь 2003 г.) был рабочим проектом на W3C, но теперь стал WSDL 2.0. Согласно W3C: WSDL 1.2 проще и гибче для разработчиков, чем предыдущая версия. WSDL 1.2 пытается удалить несовместимые функции, а также лучше определяет привязку HTTP 1.1. WSDL 1.2 не поддерживался большинством серверов / поставщиков SOAP.

WSDL 2.0 стал рекомендацией W3C в июне 2007 года. WSDL 1.2 был переименован в WSDL 2.0, поскольку он существенно отличается от WSDL 1.1. Изменения следующие:

  • Добавлена ​​дополнительная семантика в язык описания
  • Удалены конструкции сообщений
  • Перегрузка оператора не поддерживается
  • Типы портов переименованы в интерфейсы
  • Порты переименованы в конечные точки

Соображения безопасности

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

Смотрите также

использованная литература

внешние ссылки