close

WSDL

Перейти к навигации Перейти к поиску

WSDL , сокращение от Язык описания веб-служб , представляет собой формат расширяемого языка разметки ( XML ), используемый для описания веб-служб (WS). Версия 1.0 была первой рекомендацией W3C , а версия 1.1 так и не получила такого статуса. Версия 2.0 стала текущей рекомендацией этой организации.

WSDL описывает общедоступный интерфейс к веб-службам. Он основан на XML и описывает форму связи, то есть требования протокола и форматы сообщений, необходимые для взаимодействия со службами, перечисленными в его каталоге. Операции и сообщения, которые он поддерживает, описаны в аннотации, а затем привязаны к конкретному сетевому протоколу и формату сообщения.

Таким образом, WSDL часто используется в сочетании с SOAP и XML -схемой . Клиентская программа, которая подключается к веб-службе, может прочитать WSDL, чтобы определить, какие функции доступны на сервере. Специальные типы данных включаются в файл WSDL в виде XML-схемы. Клиент может использовать SOAP для вызова одной из функций, перечисленных в WSDL.

WSDL позволяет нам иметь описание веб-службы. Определяет абстрактный интерфейс, через который клиент может получить доступ к службе, и сведения о том, как его следует использовать.

Структура WSDL

Структура WSDL состоит из следующих элементов:

Типы данных

<types>: В этом разделе определяются типы данных, используемые в сообщениях. Используются типы, определенные в спецификации схемы XML.

Сообщения

<message>: Здесь мы определяем элементы сообщения. Каждое сообщение может состоять из ряда логических частей. Детали могут относиться к любому из типов, определенных в предыдущем разделе.

Типы портов

<portType>: в этом разделе мы определяем разрешенные операции и сообщения, которыми обмениваются в Сервисе.

Привязки

<binding>: мы указываем используемые протоколы связи.

Услуги

<service>: Набор портов и их адрес. Эта заключительная часть относится к тому, что было предоставлено в предыдущих разделах.

С этими элементами мы не знаем, что делает служба, но у нас есть необходимая информация для взаимодействия с ней (функции, сообщения ввода/вывода, протоколы...)

Примеры

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

 <definitions  name= "StockQuote"  
          targetNamespace= "http://example.com/stockquote.wsdl" 
          xmlns:tns= "http://example.com/stockquote.wsdl" 
          xmlns:xsd1= "http://example. com/stockquote.xsd" 
          xmlns:soap= "http://schemas.xmlsoap.org/wsdl/soap/" 
          xmlns= "http://schemas.xmlsoap.org/wsdl/" >
 
    <types> 
       <schema  targetNamespace= "http://example.com/stockquote.xsd" 
              xmlns= "http://www.w3.org/2000/10/XMLSchema" > 
           <element  name= "TradePriceRequest" > 
              <complexType > 
                  <all> 
                      <element  name= "tickerSymbol"  type= "string" /> 
                  </all> 
              </complexType> 
           </element> 
           <element  name= "TradePrice" > 
              <complexType> 
                  <all> 
                      <element  name= "price "  type= "float" /> 
                  </all> 
              </complexType> 
           </element> 
       </schema> 
    </types>
 
    <message  name= "GetLastTradePriceInput" > 
        <part  name= "body"  element= "xsd1:TradePriceRequest" /> 
    </message>
 
    <message  name= "GetLastTradePriceOutput" > 
        <part  name= "body"  element= "xsd1:TradePrice" /> 
    </message>
 
    <portType  name= "StockQuotePortType" > 
        <operation  name= "GetLastTradePrice" > 
           <input  message= "tns:GetLastTradePriceInput" /> 
           <output  message= "tns:GetLastTradePriceOutput" /> 
        </operation> 
    </portType>
 
    <binding  name= "StockQuoteSoapBinding"  type= "tns:StockQuotePortType" > 
        <soap:binding  style= "document"  transport= "http://schemas.xmlsoap.org/soap/http" /> 
        <operation  name= "GetLastTradePrice" > 
           <soap:operation  soapAction= "http://example.com/GetLastTradePrice" /> 
           <input> 
               <soap:body  use= "literal" /> 
           </input> 
           <output> 
               <soap:body  use= "literal" /> 
           </output> 
        </operation> 
    </binding>
 
    <service  name= "StockQuoteService" > 
        <documentation> Мой первый сервис </documentation> 
        <port  name= "StockQuotePort"  binding= "tns:StockQuoteSoapBinding" > 
           <soap:address  location= "http://example.com/stockquote" /> 
        </порт> 
    </сервис>
 
 </определения>

Смотрите также

Внешние ссылки