- WSDL расшифровывается Web Services Description Language
- WSDL используется для описания веб-служб
- WSDL записывается в XML
- WSDL является рекомендацией W3C от 26. Июнь 2007
WSDL Документы
WSDL документ описывает веб-службу. Он определяет местонахождение службы и методы обслуживания, используя эти основные элементы:
Элемент | Описание |
---|---|
<types> | Определяет (XML Schema) типы данных , используемые веб - службы |
<message> | Определяет элементы данных для каждой операции |
<portType> | Описывает операции, которые могут быть выполнены и сообщения, связанные. |
<binding> | Определяет формат протокола и данных для каждого типа порта |
Основная структура документа WSDL выглядит следующим образом:
<definitions>
<types>
data type definitions........
</types>
<message>
definition of the data being communicated....
</message>
<portType>
set of operations......
</portType>
<binding>
protocol and data format specification....
</binding>
</definitions>
Пример WSDL
Это упрощенная часть WSDL-документа:
<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>
В этом примере <portType> элемент определяет "glossaryTerms" как имя port , и "getTerm" в качестве имени в operation .
"getTerm" операция имеет input message под названием "getTermRequest" и output message под названием "getTermResponse" .
<message> элементы определяют parts каждого сообщения и связанных с типами данных.
<portType> Элемент
<portType> элемент определяет a web service - operations messages a web service , то operations , которые могут быть выполнены, и messages , которые участвуют.
Тип запроса-ответа является наиболее распространенным типом операции, но WSDL определяет четыре типа:
Тип | Определение |
---|---|
One-way | Операция может получить сообщение, но не будет возвращать ответ |
Request-response | Операция может принимать запрос и возвратит ответ |
Solicit-response | Операция может послать запрос и будет ждать ответа |
Notification | Операция может послать сообщение, но не будет ждать ответа |
WSDL 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 >
В приведенном выше примере, PortType "glossaryTerms" определяет операцию в одну сторону под названием "setTerm" .
"setTerm" операция позволяет ввод новых терминов глоссария сообщений с использованием "newTermValues" сообщение с входными параметрами "term" и "value" . Тем не менее, никакого вывода не определена для операции.
WSDL Request-Response Операция
Пример из операции запрос-ответ:
<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>
В приведенном выше примере, PortType "glossaryTerms" определяет операцию запрос-ответ под названием "getTerm" .
"getTerm" операция требует входное сообщение под названием "getTermRequest" с параметром называется "term" , и будет возвращать выходное сообщение под названием "getTermResponse" с параметром называется "value" .
Связывание WSDL SOAP
WSDL привязок определяет формат сообщений и протокол детали для веб-службы.
Пример из операции запрос-ответ:
<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 атрибута (you can use any name you want) определяет имя привязки, а type атрибут указывает на порт для связывания, в данном случае "glossaryTerms" порта.
soap:binding элемент имеет два атрибута - стиль и транспорт.
style атрибута может быть "rpc" или "document" . В этом случае мы используем документ. transport атрибут определяет протокол SOAP для использования. В этом случае мы используем HTTP.
operation элемент определяет каждую операцию , которая выставляет PortType.
Для каждой операции соответствующий SOAP-действие должно быть определено. Кроме того, необходимо указать, как входные и выходные данные кодируются. В этом случае мы используем "literal" .