Wat is het verschil tussen <binden> en <poortType> in WSDL?

Zowel <binding>als <portType>lijken een bewerking en de bijbehorende boodschap te definiëren. Ik begrijp het niet helemaal, waarom zijn ze allebei nodig?


Antwoord 1, autoriteit 100%

portType(analoog naar Java-interface)

  • PortType is een abstractieonderdeel van WSDL.
  • Een abstracte reeks bewerkingen ondersteund door een of meer eindpunten.

binden

  • Binding is een concreet onderdeel van WSDL.
  • Beschrijft hoe de bewerking wordt aangeroepen door het specificeren van concrete protocol- en gegevensformaatspecificaties voor de bewerkingen en berichten.
  • bindingen zijn er in drie soorten

    1. SOAP-binding:
      SOAP-binding maakt ofwel documentof rpc-stijlmogelijk met ofwel encodingof literal. Coderinggeeft aan hoe een gegevenswaarde moet worden gecodeerd in een XML-indeling (deze regels specificeren hoe “iets” wordt gecodeerd/geserialiseerd naar XML en vervolgens wordt gedecodeerd/gedeserialiseerd van XML terug naar “iets”) . Letterlijkbetekent dat de gegevens geserialiseerd zijn volgens een schema (dit zijn gewoon XML-gegevens). Met transporttype http, jms, smtp…

    2. HTTP GET & POST-binding:
      WSDL bevat een binding voor de GET- en POST-werkwoorden van HTTP 1.1 om de interactie tussen een webbrowser en een website te beschrijven.

    3. MIME-binding:
      WSDL bevat een manier om abstracte typen te binden aan concrete berichten in een of ander MIME-formaat.


voer hier de afbeeldingsbeschrijving in

In WSDL 2.0:

  • PortTypes hernoemd naar interfaces
  • Poorten hernoemd naar eindpunten
  • Verwijderde berichtconstructies

Bron


Nuttige links


Antwoord 2, autoriteit 77%

Interfaces (wsdl:portType)

Het WSDL portType-element definieert een groep bewerkingen (ook wel een interface genoemd).

De bedieningselementen bevatten een combinatie van invoer- en uitvoerelementen. Er kan een foutelement zijn wanneer u een uitvoerelement hebt. De volgorde van deze elementen bepaalt het berichtuitwisselingspatroon (MEP) (One-way, Request – Response, etc)

voer hier de afbeeldingsbeschrijving in

wsdl:binding

Het WSDL-bindingselement beschrijft de concrete details van het gebruik van een bepaald poorttype met een bepaald protocol.

voer hier de afbeeldingsbeschrijving in


Antwoord 3, autoriteit 34%

PortType definieert de abstracte interfacevan een webservice.
Conceptueel is het als een Java-interface, omdat het een abstract type en gerelateerde methoden definieert.
In WSDL wordt het poorttype geïmplementeerddoor de bindings- en service-elementen die de protocollen, coderingsschema’s enz. aangeven die moeten worden gebruikt door een webservice-implementatie
D.w.z. de binding specificeert concrete implementatiedetailsen wijst in wezen een portType toe aan een set protocollen (HTTP en SOAP) berichtstijlen (Document/RPC) en coderingen (letterlijk)
Is het onderscheid nu duidelijk?


Antwoord 4, autoriteit 14%

portType
Een enkele webservicekan een aantal verschillende protocollenondersteunen. De structuur van de gegevens is afhankelijk van het protocol waarmee u de webservice aanroept. Daarom hebt u een manier nodig om de bewerkingen in kaart te brengen naar de eindpuntenvan waaruit ze toegankelijk zijn. Het element portTypezorgt voor deze toewijzing.

U kunt een portType-definitie plaatsen voor elk van de protocollen die voor u beschikbaar zijn voor deze webservice. U kunt bijvoorbeeld individuele portType-definities hebben voor het gebruik van SOAP, HTTP-POST en HTTP-GET. De bewerkingsnaam is de methode die beschikbaar is via de webservice.

bindend
U kunt definiëren hoe de eindgebruiker zich bindt aan een poort waar de bewerking beschikbaar is. Dit doe je door het element te gebruiken.


Antwoord 5, autoriteit 6%

wsdl:portType hoort bij wsdl:operation
d.w.z. we zijn in het rijk van berichten en xml als zodanig

maar wsdl:binding past bij soap:binding en soap:operation
d.w.z. we bevinden ons op het gebied van codering, adressen, headers en rpc

bijv. van: 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/"/>

en uit paragraaf 3.2 alle mogelijke details over communicatie op een lager niveau:

De SOAP Binding breidt WSDL uit met de volgende extensie-elementen:

<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>

Other episodes