Определение типов портов в WSDL
После определения сообщений веб-сервиса, необходимо задать операции, их обрабатывающие. Для приведенных выше сообщений можно задать следующую операцию:
<wsdl:operation name="GetCatalogs">
<wsdl:documentation>
Получить список каталогов
</wsdl:documentation>
<wsdl:input message="tns:GetCatalogsSoapIn" />
<wsdl:output message="tns:GetCatalogsSoapOut" />
</wsdl:operation>
Таким образом, была задана операция типа «запрос/ответ» принимающая сообщения одного типа и отправляющая в ответ сообщения другого типа. Всего WSDL поддерживает четыре типа операций:
· Однонаправленные (One-way)– веб-сервис принимает сообщение, но не отправляет ничего в ответ.
· Запрос/ответ (Request-response)– аналог вызова удаленной процедуры.
· Запрос отклика (Solicit-response)– запрос ответа без входных данных.
· Уведомление (Notification) – рассылка сообщений определенному кругу получателей, который обычно определяется через механизм подписки.
Все эти операции определяются с помощью стандартного набора элементов, и в общем случае операция может быть представлена таким образом:
<wsdl:operation name="nmtoken" parameterOrder="nmtokens">
<wsdl:input name="nmtoken" message="qname"/>
<wsdl:output name="nmtoken" message="qname"/>
<wsdl:fault name="nmtoken" message="qname"/>*
</wsdl:operation>
Элементы <input> и <output> отвечают за входные и выходные сообщения операции, а элемент <fault>, который является опциональным, за сообщение об ошибке, которая может возникнуть при обработке запроса.
После того, как определены операции, для веб-сервиса задаются типы портов, которые представляют собой набор операций. Типы портов задаются с помощью элемента <portType>, который можно сравнить с библиотекой функций, модулем или классом в традиционном языке программирования. Операции в случае проведения этой аналогии выступают в качестве процедур или методов класса, а сообщения в качестве входных и выходных их параметров.
Таким образом, в рассматриваемом примере веб-сервиса интернет-магазина определение типа порта будет следующим:
<wsdl:portType name="WebShopSoap">
<wsdl:operation name="GetCatalogs">
<wsdl:documentation>
Получить список каталогов
</wsdl:documentation>
<wsdl:input message="tns:GetCatalogsSoapIn" />
<wsdl:output message="tns:GetCatalogsSoapOut" />
</wsdl:operation>
<wsdl:operation name="GetGoods">
<wsdl:documentation>
Получить список товаров в каталоге
</wsdl:documentation>
<wsdl:input message="tns:GetGoodsSoapIn" />
<wsdl:output message="tns:GetGoodsSoapOut" />
</wsdl:operation>
...
</wsdl:portType>
Дата добавления: 2015-02-28; просмотров: 821;