WSDL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
англ. Web Services Description Language / WSDL
WSDL.svg
Розширення файлу: .wsdl
MIME-тип: application/wsdl+xml
Розробник: World Wide Web Consortium
Міститься у: XML
Стандарт(и): 2.0 Recommendation

Мова опису веб-сервісів (англ. Web Services Description Language, WSDL) — мова визначення інтерфейсу веб-сервісу заснована на XML, що описує функціональність веб-сервісу і спосіб доступу до нього. Акронім WSDL також використовують для будь-якого конкретного WSDL опису веб-сервісу (також званого як WSDL-файл), який забезпечує для комп'ютера опис того, як сервіс можна викликати, які параметри він очікує, і які структури даних він повертає. Таким чином, мета WSDL-файлу приблизно аналогічна визначенню методу в мові програмування.

Поточна версія WSDL — WSDL 2.0. Значення акроніма змінилося з версії 1.1, де літера «D» означала «визначення» (англ. «Definition»).

Опис[ред.ред. код]

Версії 1.1 и 2.0

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

WSDL часто використовується в комбінації з SOAP і XML-схеми для надання веб-сервісів через Інтернет. Клієнтська програма підключена до веб-служби може прочитати файл WSDL, щоб визначити, які операції доступні на сервері. Будь-які спеціальні типи даних, що використовуються, вбудовані в файл WSDL у вигляді XML-схеми. Потім клієнт може використовувати SOAP, щоб викликати одну з операцій, перерахованих у файлі WSDL, використовуючи, наприклад, XML через HTTP.

Поточна версія специфікації WSDL 2,0; версія 1.1 була схвалена W3C, але версія 2.0 рекомендована W3C[1]. WSDL 1.2 було перейменовано у WSDL 2.0 через його істотні відмінності від WSDL 1.1. Приймаючи зв'язування з усіма методами HTTP запиту (не тільки GET і POST, як у версії 1.1), специфікація WSDL 2.0 пропонує поліпшену підтримку веб-сервісів REST, і її набагато простіше реалізувати[2]. Однак для підтримка цієї специфікації бракує SDK для веб сервісів, які все ще пропонують інструменти тільки для WSDL 1.1. Наприклад, у версії 2.0 Business Process Execution Language (BPEL) підтримує тільки WSDL 1.1.

WSDL 1.1 термін WSDL 2.0 термін Опис
Сервіс Сервіс Містить набір системних функцій, які були виставлені на веб-протоколах.
Порт Кінцева точка Визначає адресу або точку підключення до веб-службі. Це, як правило, представлено простим рядком HTTP URL.
Binding Binding Визначає інтерфейс і стиль зв'язування SOAP (RPC / Документ) і транспорт (протокол SOAP). Секція зв'язування також визначає операції.
PortType Інтерфейс Визначає веб-служби, операції, які можуть бути виконані, а також повідомлення, які використовуються для виконання операції.
Операція Операція Визначає дії SOAP і спосіб кодування повідомлення, наприклад, "буквальні". Операція як метод або виклик функції в традиційній мові програмування.
Повідомлення Немає Як правило, повідомлення відповідає операції. Повідомлення містить інформацію, необхідну для виконання операції. Кожне повідомлення складається з одного або декількох логічних частин. Кожна частина пов'язана з атрибутом message-typing. Атрибут імені повідомлення містить унікальне ім'я серед усіх повідомлень. Атрибут part name забезпечує унікальне ім'я серед всіх частин, що обмежено повідомленням. Частини - це опис логічного змісту повідомлення. У RPC зв'язуванні, зв'язування може посилатися на ім'я частини для того, щоб вказати специфічну інформацію для зв'язування про частини. Частина може являти собою параметр в повідомленні; зв'язування визначає фактичне значення частини.

Повідомлення були видалені в WSDL 2.0, в якому типи XML-схеми для визначення тіла входів, виходів і несправностей, викликаються просто і прямо.

Тип Тип Описує дані. Мова XML схеми (також відома як XSD) використовується (вбудовано або через посилання) для цієї мети.

Підгрупа WSDL[ред.ред. код]

Підгрупа WSDL (SWSDL[3]) - це WSDL з підмножиною операцій оригінального WSDL. Розробник може використовувати підгрупу WSDL (SWSDL) для доступу до так званого підмножинного сервісу - Subset сервісу - таким чином обробляти підмножину коду веб-служби. Можна розділити веб-сервіс на частини на основі підмножини WSDL (SWSDL) для доступу до Subset сервісу. Subset сервіс підгрупи можна розділити на рівні. SWSDL використовуються для аналізу, тестування веб-служби і розробки зверху вниз. AWSCM[4] достатньо новий інструмент для успішної побудови SWSDL

Структура[ред.ред. код]

Кожний документ WSDL 1.1 можна розбити на наступні логічні частини:

  1. визначення типів даних (типи) - визначення виду відправлених і отриманих сервісом XML-повідомлень
  2. елементи даних (повідомлення) - повідомлення, що використовуються з веб-сервісом
  3. абстрактні операції (PortType) - список операцій, які можуть бути виконані з повідомленнями
  4. зв'язування сервісів (зв'язування (англ. binding)) - спосіб, яким повідомлення буде доставлено

Приклади WSDL[ред.ред. код]

Приклад 1 - WSDL 1.1[ред.ред. код]

<message name="getTermRequest">
   <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
   <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
  <operation name="getTerm">
      <input message="getTermRequest"/>
      <output message="getTermResponse"/>
  </operation>
</portType>

Приклад 2 - WSDL 2.0[ред.ред. код]

<?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 (Network Application Service Specification Language) від IBM і SDL (Service Description Language) від 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 намагається видалити несумісні функції, а також визначає binding HTTP 1.1 binding краще. WSDL 1.2 не підтримувався більшістю SOAP серверів та постачальників.

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

  • Додана додаткова семантика до мови опису
  • Вилучені конструкції повідомлень
  • Перевантаження операторів не підтримується
  • PortType перейменовано в інтерфейс
  • Порти перейменований в кінцеві точки

Дивитися також[ред.ред. код]

Посилання[ред.ред. код]

  1. Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language. www.w3.org. Процитовано 2016-12-25. 
  2. Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts. www.w3.org. Процитовано 2016-12-25. 
  3. Chaturvedi, A. (2014-12-01). Automated Web Service Change Management AWSCM - A Tool. 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. с. 715–718. doi:10.1109/CloudCom.2014.144. Процитовано 2016-12-25. 
  4. Chaturvedi, A. (2014-12-01). Automated Web Service Change Management AWSCM - A Tool. 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. с. 715–718. doi:10.1109/CloudCom.2014.144. Процитовано 2016-12-25. 


Зовнішні посилання[ред.ред. код]