XML -WSDL
- WSDL steht für Web Services Description Language
- WSDL wird verwendet, um Webdienste zu beschreiben
- WSDL ist in XML geschrieben
- WSDL ist eine W3C-Empfehlung vom 26. Juni 2007
WSDL-Dokumente
Ein WSDL-Dokument beschreibt einen Webservice. Es gibt den Standort des Dienstes und die Methoden des Dienstes an, indem es diese Hauptelemente verwendet:
Element | Description |
---|---|
<types> | Defines the (XML Schema) data types used by the web service |
<message> | Defines the data elements for each operation |
<portType> | Describes the operations that can be performed and the messages involved. |
<binding> | Defines the protocol and data format for each port type |
Die Hauptstruktur eines WSDL-Dokuments sieht folgendermaßen aus:
<definitions>
<types>
data type definitions........
</types>
<message>
definition of the data being communicated....
</message>
<portType>
set of operations......
</portType>
<binding>
protocol and data format specification....
</binding>
</definitions>
WSDL-Beispiel
Dies ist ein vereinfachter Bruchteil eines WSDL-Dokuments:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
In diesem Beispiel definiert das <portType> -Element „glossaryTerms“ als den Namen eines Ports und „getTerm“ als den Namen einer Operation .
Die "getTerm"-Operation hat eine Eingangsnachricht namens "getTermRequest" und eine Ausgangsnachricht namens "getTermResponse".
Die <message> -Elemente definieren die Teile jeder Nachricht und die zugehörigen Datentypen.
Das <portType>-Element
Das <portType>-Element definiert einen Webdienst , die Operationen , die ausgeführt werden können, und die beteiligten Nachrichten .
Der Request-Response-Typ ist der häufigste Operationstyp, aber WSDL definiert vier Typen:
Type | Definition |
---|---|
One-way | The operation can receive a message but will not return a response |
Request-response | The operation can receive a request and will return a response |
Solicit-response | The operation can send a request and will wait for a response |
Notification | The operation can send a message but will not wait for a response |
WSDL-Einwegbetrieb
Ein Beispiel für einen Einwegbetrieb:
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
Im obigen Beispiel definiert der portType „glossaryTerms“ eine unidirektionale Operation namens „setTerm“.
Die „setTerm“-Operation ermöglicht die Eingabe von Nachrichten zu neuen Glossarbegriffen unter Verwendung einer „newTermValues“-Nachricht mit den Eingabeparametern „term“ und „value“. Für die Operation ist jedoch keine Ausgabe definiert.
WSDL-Request-Response-Vorgang
Ein Beispiel für eine Request-Response-Operation:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
Im obigen Beispiel definiert der portType „glossaryTerms“ eine Anfrage-Antwort-Operation namens „getTerm“.
Die Operation „getTerm“ erfordert eine Eingabenachricht namens „getTermRequest“ mit einem Parameter namens „term“ und gibt eine Ausgabenachricht namens „getTermResponse“ mit einem Parameter namens „value“ zurück.
WSDL-Bindung an SOAP
WSDL-Bindungen definieren das Nachrichtenformat und Protokolldetails für einen Webdienst.
Ein Beispiel für eine Request-Response-Operation:
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation
soapAction="http://example.com/getTerm"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
Das Bindungselement hat zwei Attribute – Name und Typ.
Das name-Attribut (Sie können einen beliebigen Namen verwenden) definiert den Namen der Bindung, und das type-Attribut zeigt auf den Port für die Bindung, in diesem Fall den „glossaryTerms“-Port.
Das Element soap:binding hat zwei Attribute – Stil und Transport.
Das Stilattribut kann "rpc" oder "document" sein. In diesem Fall verwenden wir document. Das Transportattribut definiert das zu verwendende SOAP-Protokoll. In diesem Fall verwenden wir HTTP.
Das operation -Element definiert jede Operation, die der portType verfügbar macht.
Für jede Operation muss die entsprechende SOAP-Aktion definiert werden. Sie müssen auch angeben, wie Ein- und Ausgabe codiert werden. In diesem Fall verwenden wir „literal“.