... оба, похоже, определяют операцию и это сообщение. я не совсем понимаю, почему оба необходимы.
WSDL: какая разница между <binding> и <portType>
Ответ 1
Интерфейсы (wsdl: portType)
Элемент WSTL portType определяет группу операций, также известную как интерфейс в большинстве сред. Каждый рабочий элемент содержит комбинацию входных и выходных элементов, и когда у вас есть выходной элемент, вы также можете иметь элемент ошибки. Порядок этих элементов определяет шаблон обмена сообщениями (MEP) (односторонний, запрос-ответ и т.д.)
WSDL: связывание
Элемент привязки WSDL описывает конкретные детали использования определенного типа portType с данным протоколом.
Ответ 2
portType (аналог с интерфейсом Java)
- PortType является частью абстракции WSDL.
- Абстрактный набор операций, поддерживаемых одной или несколькими конечными точками.
связывания
- Связывание является конкретной частью WSDL.
- Описывает, как операция вызывается, указывая конкретные спецификации протокола и данных для операций и сообщений.
-
-
Связывание SOAP:
Связывание SOAP позволяет использоватьdocument
илиrpc
style с помощьюencoding
илиliteral
. Кодирование указывает, как значение данных должно быть закодировано в формате XML (эти правила определяют, как "что-то" закодировано/сериализовано в XML, а затем позже декодировано/де-сериализовано из XML обратно в "что-то" ), Литерал означает, что данные сериализуются в соответствии со схемой (это всего лишь простые данные XML). С транспортным типом http, jms, smtp... -
HTTP GET и привязка POST:
WSDL включает привязку для HTTP 1.1 GET и POST-глаголов, чтобы описать взаимодействие между веб-браузером и веб-сайтом. -
MIME-привязка: WSDL включает способ привязки абстрактных типов к конкретным сообщениям в некотором формате MIME.
-
В WSDL 2.0:
- PortTypes, переименованные в интерфейсы
- Порты, переименованные в конечные точки
- Удаленные конструкторы сообщений
Полезные ссылки
Ответ 3
Связывание определяет абстрактный интерфейс веб-службы.
Концептуально это похоже на интерфейс Java, поскольку он определяет абстрактный тип и связанные с ним методы.
В WSDL тип порта реализован элементами привязки и обслуживания, которые указывают протоколы, схемы кодирования и т.д., Которые будут использоваться при реализации веб-службы
То есть привязка специфицирует конкретные подробности реализации и по существу сопоставляет portType с наборами сообщений (HTTP и SOAP) (Document/RPC) и кодировками (буквальными)
Является ли это уточнением сейчас?
Ответ 4
PortType
один веб-сервис может поддерживать количество различных протоколов. Структура данных зависит от протокола, который вы используете для вызова веб-службы. Из-за этого вам нужен способ сопоставления операций с конечными точками , с которыми они могут быть доступны. Элемент portType выполняет это сопоставление.
Вы можете поместить определение типа порта для каждого из доступных вам протоколов для этой веб-службы. Например, вы можете иметь отдельные определения portType для использования SOAP, HTTP-POST и HTTP-GET. Имя операции - это метод, доступный из веб-службы.
привязки
Вы можете определить, как конечный пользователь связывается с портом, где операция доступна. Вы делаете это, используя элемент.
Ответ 5
wsdl: portType идет с wsdl: операция то есть мы находимся в областях сообщений и xml как таковых
но wsdl: привязка идет с мылом: привязка и мыло: операция то есть мы находимся в области кодирования, адресов, заголовков и rpc
например. от: http://www.w3.org/TR/wsdl#_soap-b
<binding name="StockQuoteSoap" type="tns:StockQuotePortType">
<soap:binding style="document" transport="http://example.com/smtp"/>
<operation name="SubscribeToQuotes">
<input message="tns:SubscribeToQuotes">
<soap:body parts="body" use="literal"/>
<soap:header message="tns:SubscribeToQuotes" part="subscribeheader" use="literal"/>
.....
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTradePrice">
<soap:operation soapAction="http://example.com/GetTradePrice"/>
<input>
<soap:body use="encoded" namespace="http://example.com/stockquote"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
...
и из п. 3.2 все возможные подробности о связях более низкого уровня:
Связывание SOAP расширяет WSDL со следующими элементами расширения:
<definitions .... >
<binding .... >
<soap:binding style="rpc|document" transport="uri">
<operation .... >
<soap:operation soapAction="uri"? style="rpc|document"?>?
<input>
<soap:body parts="nmtokens"? use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
<soap:header message="qname" part="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>*
<soap:headerfault message="qname" part="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?/>*
<soap:header>
</input>
<output>
<soap:body parts="nmtokens"? use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
<soap:header message="qname" part="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>*
<soap:headerfault message="qname" part="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?/>*
<soap:header>
</output>
<fault>*
<soap:fault name="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
</fault>
</operation>
</binding>
<port .... >
<soap:address location="uri"/>
</port>
</definitions>