CodeNix

692378482

codenix.sv

admin@codenix.net

WSDL

Опубліковано: Категорія: Різне Переглядів: 391

xml wsdl web services

WSDL розшифровується як Мова Опису Web-сервісів (Web Services Description Language).

Документ WSDL є XML-документом, що описує web-сервіс. Він визначає розташування сервісу та або методи, які надаються їм.

  • WSDL є XML-документом
  • WSDL використовується для опису веб-служб
  • WSDL також використовується для пошуку веб-служби
  • WSDL є рекомендацією W3C

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

WSDL-документ складається з наступних елементів:

  • binding - підтримувані протоколи.
  • message - повідомлення Web-служби (запит, відповідь).
  • portType - всі доступні методи.
  • service - URI служби.
  • types - використовувані типи даних.

Основна структура документа WSDL виглядає наступним чином:

<definitions>

<types>
   оголошення типів........
</types>

<message>
   оголошення повідомлень....
</message>

<portType>
   оголошення порат........
</portType>

<binding>
   оголошення зв'язків.......
</binding>

</definitions>

Документ WSDL може також містити інші елементи, наприклад елементи розширення і елемент service, який дозволяє об'єднати разом в одному окремому документі WSDL визначення декількох web-сервісів.

Порти WSDL

Елемент portType - найважливіший елемент WSDL.

Він визначає web-сервіс, виконувані ним операції і допустимі повідомлення

Порт визначає точку монтування до web-сервісу. Його можна порівняти з бібліотекою функцій (модулем, класом) у традиційній мові програмування, а кожну операцію можна порівняти з функцією.

Типи операцій

Запит-відповідь (request-response) - найпоширеніший тип операцій. Всього ж в WSDL визначено чотири типи:

Тип Опис
Односпрямований (One-way) Операція може приймати повідомлення, але не повертатиме відповідь
Запит-відповідь (Request-response) Операція може приймати запит і поверне відповідь
Питання-відповідь (Solicit-response) Операція може надіслати запит і буде чекати відповідь
Повідомлення (Notification)  Операція може послати повідомлення, але не чекатиме відповідь

Односпрямована (One-Way) Операція

Приклад односпрямованої операції:

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

<portType name="glossaryTerms">
   <operation name="setTerm">
      <input name="newTerm" message="newTermValues"/>
   </operation>
</portType >

У цьому прикладі порт glossaryTerms визначає односпрямовану операцію під назвою setTerm.

Операція SetTerm дозволяє введення нових словникових термів за допомогою повідомлення newTermValues з вхідними параметрами term value. Проте, дана операція не передбачає будь-якого вихідного повідомлення.

Операція типу "Запит-відповідь"

Приклад операції типу "запит-відповідь":

<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>

У цьому прикладі порт glossaryTerms визначає операцію типу "запит-відповідь" з ім'ям getTerm.

Операція getTerm приймає на вхід повідомлення з ім'ям getTermRequest і параметром term і повертає повідомлення з ім'ям getTermResponse і параметром value.

Повідомлення WSDL

Елемент message визначає елементи даних операції.

Кожне повідомлення може містити одну або декілька частин. Ці частини можна порівняти з параметрами викликаємих функцій у традиційній мові програмування.

Типи WSDL

Елемент types визначає тип даних, що використовуються web-сервісом.

Для максимальної платформо-незалежності WSDL використовує синтаксис XML Schema для визначення типів даних.

Зв'язки WSDL

Елемент 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>

<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
  <operation>
    <soap:operation
     soapAction="http://example.com/getTerm"/>
    <input>
      <soap:body use="literal"/>
    </input>
    <output>
      <soap:body use="literal"/>
    </output>
  </operation>
</binding> 

Елемент binding має два атрибути - атрибут name і атрибут type.

Атрибут name визначає назву (можна використовувати будь-яку) зв'язку, а атрибут type - точку монтування для зв'язку, в даному випадку це порт golossaryTerms.

Елемент soap:binding має два атрибути --- атрибут style і атрибут transport.

Елемент style може бути або rpc, або document. У даному випадку використовується значення document. Атрибут transport визначає використовуваний SOAP протокол. В даному випадку це HTTP.

Елемент operation описує всі операції, з якими порт може працювати.

Для кожної операції має бути визначено у відповідність дію SOAP. Також необхідно вказати кодування введення і виведення. У цьому випадку використовується literal.


Коментарі