Подтвердить что ты не робот

WSDL: какая разница между <binding> и <portType>

... оба, похоже, определяют операцию и это сообщение. я не совсем понимаю, почему оба необходимы.

4b9b3361

Ответ 1

Интерфейсы (wsdl: portType)

Элемент WSTL portType определяет группу операций, также известную как интерфейс в большинстве сред.  Каждый рабочий элемент содержит комбинацию входных и выходных элементов, и когда у вас есть выходной элемент, вы также можете иметь элемент ошибки. Порядок этих элементов определяет шаблон обмена сообщениями (MEP) (односторонний, запрос-ответ и т.д.)

enter image description here

WSDL: связывание

Элемент привязки WSDL описывает конкретные детали использования определенного типа portType с данным протоколом.

enter image description here

Ответ 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>