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
-
SOAP-binding:
SOAP-binding maakt ofweldocument
ofrpc
-stijlmogelijk met ofwelencoding
ofliteral
. 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… -
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. -
MIME-binding:
WSDL bevat een manier om abstracte typen te binden aan concrete berichten in een of ander MIME-formaat.
-
In WSDL 2.0:
- PortTypes hernoemd naar interfaces
- Poorten hernoemd naar eindpunten
- Verwijderde berichtconstructies
Nuttige links
- WSDL Reading, een beginnershandleiding
- W3C: Web Services Description Language (WSDL) 1.1
- W3C: Simple Object Access Protocol (SOAP) 1.1
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)
wsdl:binding
Het WSDL-bindingselement beschrijft de concrete details van het gebruik van een bepaald poorttype met een bepaald protocol.
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>