WSDL — Вікіпедія
Розширення файлу: | .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»).
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 (SWSDL[3]) - це WSDL з підмножиною операцій оригінального WSDL. Розробник може використовувати підгрупу WSDL (SWSDL) для доступу до так званого підмножинного сервісу - Subset сервісу - таким чином обробляти підмножину коду вебслужби. Можна розділити вебсервіс на частини на основі підмножини WSDL (SWSDL) для доступу до Subset сервісу. Subset сервіс підгрупи можна розділити на рівні. SWSDL використовуються для аналізу, тестування вебслужби і розробки зверху вниз. AWSCM[3] достатньо новий інструмент для успішної побудови SWSDL
Кожний документ WSDL 1.1 можна розбити на наступні логічні частини:
- визначення типів даних (типи) - визначення виду відправлених і отриманих сервісом XML-повідомлень
- елементи даних (повідомлення) - повідомлення, що використовуються з вебсервісом
- абстрактні операції (PortType) - список операцій, які можуть бути виконані з повідомленнями
- зв'язування сервісів (зв'язування (англ. binding)) - спосіб, яким повідомлення буде доставлено
<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>
<?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 перейменовано в інтерфейс
- Порти перейменований в кінцеві точки
- ↑ Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language. www.w3.org. Архів оригіналу за 4 січня 2017. Процитовано 25 грудня 2016.
- ↑ Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts. www.w3.org. Архів оригіналу за 25 січня 2017. Процитовано 25 грудня 2016.
- ↑ а б Chaturvedi, A. (1 грудня 2014). 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. Архів оригіналу за 12 липня 2017. Процитовано 25 грудня 2016.
- WSDL 1.0 специфікація [Архівовано 27 липня 2017 у Wayback Machine.]
- WSDL 1.1 специфікація [Архівовано 15 січня 2009 у Wayback Machine.]
- WSDL 2.0 специфікація, частина 0: Primer (остання версія) [Архівовано 4 січня 2017 у Wayback Machine.]
- WSDL 2.0 специфікація, частина 1: Core (остання версія) [Архівовано 21 січня 2009 у Wayback Machine.]
- WSDL 2.0 специфікація, 2: Adjuncts (остання версія) [Архівовано 11 січня 2017 у Wayback Machine.]
- Web Services Description Working Group [Архівовано 20 січня 2017 у Wayback Machine.]
- XML протокол [Архівовано 7 січня 2017 у Wayback Machine.]
- JSR-110: Java APIs для WSDL [Архівовано 31 жовтня 2020 у Wayback Machine.]
- JSR 172: Java ME Web специфікація сервісу [Архівовано 2 травня 2012 у Wayback Machine.]
- WSDL Java Bindings [Архівовано 11 квітня 2009 у Wayback Machine.] для XMLBeans and JAXB.
- W3C Working Draft [Архівовано 26 серпня 2016 у Wayback Machine.]
- RELAX-WS: проста мова для визначення веб сервісу заснована на RELAX NG Compact Syntax
- WSDL: погляд зсередини: частина I [Архівовано 30 січня 2017 у Wayback Machine.], частина II [Архівовано 11 лютого 2017 у Wayback Machine.]