Определение сервиса и его привязка к протоколам в WSDL
После задания наборов операций, поддерживаемых веб-сервисом необходимо определить способы его взаимодействия с клиентами. Таким образом, необходимо задать привязку на протоколы общения. Привязки задаются для типов портов с помощью элемента <binding>. Сама привязка задается с помощью элементов расширения для различных протоколов:
<wsdl:binding name="nmtoken" type="qname">
<!-- Элемент расширения (1) -->
<wsdl:operation name="nmtoken">
<!-- Элемент расширения (2) -->
<wsdl:input name="nmtoken">
<!-- Элемент расширения (3) -->
</wsdl:input>
<wsdl:output name="nmtoken">
<!-- Элемент расширения (4) -->
</wsdl:output>
<wsdl:fault name="nmtoken">
<!-- Элемент расширения (5) -->
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
Элементы расширения задаются для каждого протокола и содержат необходимую для него информацию. Например, привязка типа порта, описанного выше, на протокол SOAP версии 1.2 будет выглядеть следующим образом:
<wsdl:binding name="WebShopSoap12" type="tns:WebShopSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetCatalogs">
<soap12:operation
soapAction="http://www.mephi.ru/order/GetCatalogs"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetGoods">
<soap12:operation
soapAction=”http://www.mephi.ru/order/GetGoods”
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
В элементе <binding> указывается имя привязки и затем используемый в этой привязке тип порта. Таким образом, для любого типа порта можно задать множество привязок на различные протоколы.
Как уже говорилось выше, в рассматриваемом примере осуществляется привязка на протокол SOAP, поэтому все рассматриваемые элементы расширения являются специфическими именно для этого типа привязки. В первом элементе расширения <soap12:binding> указывается тип транспорта для выбранного протокола, который определяется самими элементами расширения посредством пространства имен (soap12). Для каждой операции из привязываемого типа порта указывается адрес, по которому она может быть вызвана и способ организации взаимодействия (document или RPC). Для сообщений операции задается кодировка, в которой это сообщение будет передаваться по транспортному протоколу. В данном случае это буквенная кодировка.
После того, как определены привяки веб-сервиса можно приступить к финальной части его описания – определению портов и объединению их в сервис. Определение порта, использующего созданную ранее привязку, выглядит следующим образом:
<wsdl:port name="WebShopSoap12" binding="tns:WebShopSoap12">
<soap12:address
location="http://www.mephi.ru/order/WebShop.asmx"/>
</wsdl:port>
Для порта определяется имя привязки, на которую он ссылается, и имя порта, которое является уникальным в рамках всего документа. В качестве дочернего элемента порта определен один элемент расширения, который содержит адресную информацию о точке доступа к порту.
Порты объединяются в сервисы с помощью элемента <service>, который является для них родительским элементом. В WSDL документе могут быть определены несколько сервисов, которые в свою очередь группируют порты. Таким образом, элементы <service> позволяют клиентскому приложению, использующему веб-сервис, выбирать нужную категорию операций для различных видов взаимодействия. Группировка может осуществляться, например, по используемым протоколам или по стилю взаимодействия.
Дата добавления: 2015-02-28; просмотров: 842;