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. 


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