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" />
</порт>
</сервис>
</определения>