Учебник WSDL: Язык описания веб-служб с пояснениями

Если вы работаете с веб-сервисами, существует несколько различных важных методик. Наряду с SOAP и REST, одной из них является язык описания WSDL. Он служит для описания функций веб-сервиса, чтобы другие участники сети также могли использовать эти сервисы. Как работает этот язык, для чего именно нужен WSDL-файл и какие связи существуют с другими языками?

Что такое WSDL?

WSDL расшифровывается как язык описания веб-служб. Это метаязык, с помощью которого можно всесторонне описать веб-сервисы. В свою очередь, веб-сервис — это услуга, которую сервер предоставляет клиентам через Интернет (или другую сеть). Это происходит независимо от платформы, между различными системами и приложениями. WSDL-файл доступен на сервере, чтобы клиент мог узнать о возможностях и процедурах веб-сервиса. Детали, приведенные в файле, указывают клиенту, как получить доступ к веб-сервису.

WSDL использует расширяемый язык разметки (XML) или схему XML (XSD) в качестве своей основы. Это означает, что в WSDL используются элементы XML.

Факт

WSDL стандартизирован Консорциумом Всемирной паутины (W3C).

Структура и свойства WSDL

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

WSDL принимает шесть основных элементов из XML:

  • типы: типы данных
  • сообщения: описание данных, которые должны быть переданы
  • интерфейс: абстрактные операции, описывающие взаимодействие между сервером и клиентом (в старой версии стандарта еще назывался portType)
  • привязка: информация об используемом транспортном протоколе
  • конечная точка: информация об интерфейсе связи, обычно в виде URI (в старой версии стандарта все еще называлась портом)
  • сервис: точки доступа веб-сервиса

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

WSDL: пример

Структура WSDL-файла будет описана ниже более подробно на примере. Следующий код предназначен для веб-службы, которая возвращает простое сообщение «Hello World».

<?xml version="1.0"?>
<definitions name="HelloWorld"
targetNamespace="http://example.com/helloworld.wsdl"
xmlns:tns="http://example.com/helloworld.wsdl"
xmlns:xsd1="http://example.com/helloworld.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">

  <types>
    <schema targetNamespace="http://example.com/helloworld.xsd"
      xmlns="http://www.w3.org/2000/10/XMLSchema">
      <element name="HelloWorldElement">
        <complexType>
          <all>
            <element name="worldRequest" type="string"/>
          </all>
        </complexType>
      </element>
</schema>
</types>

<message name = "HelloWorldRequest">
<part name = "name" type = "xsd:string"/>
</message>

<message name = "HelloWorldResponse">
<part name = "greeting" type = "xsd:string"/>
</message>

<interface name = "HelloWorld_Interface">
<operation name = "sayHelloWorld">
<input message = "tns:HelloWorldRequest"/>
<output message = "tns:HelloWorldResponse"/>
</operation>
</interface>

<binding name = "HelloWorld_Binding" type = "tns:HelloWorld_Interface">
<soap:binding style = "rpc"
transport = "http://schemas.xmlsoap.org/soap/http"/>
<operation name = "sayHelloWorld">
<soap:operation soapAction = "sayHelloWorld"/>
<input>
<soap:body
encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
namespace = "urn:examples:helloworld"
use = "encoded"/>
</input>
<output>
<soap:body
encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
namespace = "urn:examples:helloworld"
use = "encoded"/>
</output>
</operation>
</binding>

<service name = "Hello_World">
<documentation>WSDL File for HelloWorld</documentation>
<endpoint binding = "tns:HelloWorld_Binding" name = "HelloWorld_Endpoint">
<soap:address
location = "http://www.example.com/HelloWorld/" />
</endpoint>
</service>
</definitions>

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

Оцените статью
cdelat.ru
Добавить комментарий