Grundlegendes Verständnis der WSDL-Struktur – (Web Service Description Language) erklärt
Veröffentlicht: 2020-08-24Möglicherweise haben Sie meinen vorherigen Beitrag zu SOAP vs. REST-Aufruf gesehen. Heutzutage wechseln Unternehmen zu REST-Serviceaufrufen, aber die Mehrheit der Unternehmen verwendet immer noch SOAP über REST. Dieses Tutorial erklärt die Grundlagen von WSDL (Web Service Description Language).
Wenn Sie eine der folgenden Fragen haben, sind Sie hier richtig:
- Was ist Web Services Description Language (WSDL)?
- WSDL-Tutorial
- Web Services Description Language (WSDL) erklärt
- Beispiele für WSDL – Web Service Description Language
Beschreibungssprache für Webdienste (WSDL)
In der Welt der Java-Webentwicklung ist WSDL ein XML-Format zur Beschreibung von Netzwerkdiensten als eine Reihe von Endpunkten, die mit Nachrichten arbeiten, die entweder dokumentorientierte oder verfahrensorientierte Informationen enthalten.
Die Operationen und Nachrichten werden abstrakt beschrieben und dann an ein konkretes Netzwerkprotokoll und Nachrichtenformat gebunden, um einen Endpunkt zu definieren. Zugehörige konkrete Endpunkte werden zu abstrakten Endpunkten (Services) zusammengefasst.
WSDL ist erweiterbar, um die Beschreibung von Endpunkten und ihren Nachrichten unabhängig davon zu ermöglichen, welche Nachrichtenformate oder Netzwerkprotokolle für die Kommunikation verwendet werden. Die einzigen in diesem Dokument beschriebenen Bindungen beschreiben jedoch die Verwendung von WSDL
in Verbindung mit SOAP 1.1, HTTP GET/POST und MIME.

Ein weiteres muss gelesen werden:
- Beispiel-WSDL in Eclipse erstellen und Client generieren
- So erstellen Sie einen RESTful-Dienst mit Java unter Verwendung von JAX-RS und Jersey (Beispiel)
Mit anderen Worten: Ein WSDL-Dokument definiert Dienste als Sammlungen von Netzwerkendpunkten oder ports
. In WSDL ist die abstrakte Definition von Endpunkten und Nachrichten von ihrer konkreten Netzwerkbereitstellung oder Datenformatbindungen getrennt. Dies ermöglicht die Wiederverwendung abstrakter Definitionen: messages
, die abstrakte Beschreibungen der auszutauschenden Daten sind, und Porttypen, die abstrakte Sammlungen von Operationen sind.
Die konkreten Protokoll- und Datenformatspezifikationen für einen bestimmten Porttyp bilden eine wiederverwendbare binding
. Ein Port wird definiert, indem eine Netzwerkadresse mit einer wiederverwendbaren Bindung verknüpft wird, und eine Sammlung von Ports definiert einen Dienst.
Daher verwendet ein WSDL-Dokument die folgenden Elemente in der Definition von Netzwerkdiensten:
-
Types
– ein Container für Datentypdefinitionen, die ein Typsystem verwenden (z. B.XSD
). -
Message
– eine abstrakte, typisierte Definition der zu übermittelnden Daten. -
Operation
– eine abstrakte Beschreibung einer vom Dienst unterstützten Aktion. -
Port Type
– ein abstrakter Satz von Operationen, die von einem oder mehreren Endpunkten unterstützt werden. -
Binding
– eine konkrete Protokoll- und Datenformatspezifikation für einen bestimmten Porttyp. -
Port
– ein einzelner Endpunkt, der als Kombination aus einer Bindung und einer Netzwerkadresse definiert ist. -
Service
– eine Sammlung verwandter Endpunkte.
Element | Beschreibung |
---|---|
<Typen> | Definiert die (XML-Schema-)Datentypen, die vom Webdienst verwendet werden |
<Nachricht> | Definiert die Datenelemente für jede Operation |
<portType> | Beschreibt die Operationen, die durchgeführt werden können, und die damit verbundenen Meldungen. |
<Bindung> | Definiert das Protokoll und das Datenformat für jeden Porttyp |
Beispiel: SOAP 1.1 Request/Response über HTTP
Beispiel für ein XML-WSDL-Dokument.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<? xml version = "1.0" ?> < definitions name = "StockQuote" targetNamespace = "http://example.com/stockquote.wsdl" xmlns : tns = "http://example.com/stockquote.wsdl" xmlns : xsd1 = "http://example.com/stockquote.xsd" xmlns : soap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns = "http://schemas.xmlsoap.org/wsdl/" > < types > < schema targetNamespace = "http://example.com/stockquote.xsd" xmlns = "http://www.w3.org/2000/10/XMLSchema" > < element name = "TradePriceRequest" > < complexType > < all > < element name = "tickerSymbol" type = "string" / > < / all > < / complexType > < / element > < element name = "TradePrice" > < complexType > < all > < element name = "price" type = "float" / > < / all > < / complexType > < / element > < / schema > < / types > < message name = "GetLastTradePriceInput" > < part name = "body" element = "xsd1:TradePriceRequest" / > < / message > < message name = "GetLastTradePriceOutput" > < part name = "body" element = "xsd1:TradePrice" / > < / message > < portType name = "StockQuotePortType" > < operation name = "GetLastTradePrice" > < input message = "tns:GetLastTradePriceInput" / > < output message = "tns:GetLastTradePriceOutput" / > < / operation > < / portType > < binding name = "StockQuoteSoapBinding" type = "tns:StockQuotePortType" > < soap : binding style = "document" transport = "http://schemas.xmlsoap.org/soap/http" / > < operation name = "GetLastTradePrice" > < soap : operation soapAction = "http://example.com/GetLastTradePrice" / > < input > < soap : body use = "literal" / > < / input > < output > < soap : body use = "literal" / > < / output > < / operation > < / binding > < service name = "StockQuoteService" > < documentation > My first service < / documentation > < port name = "StockQuotePort" binding = "tns:StockQuoteBinding" > < soap : address location = "http://example.com/stockquote" / > < / port > < / service > < / definitions > |

SOAP 2.0 WSDL-Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
< ! -- Crunchify ' s example of WSDL 2.0 -- > <? xml version = "1.0" encoding = "UTF-8" ?> < definitions xmlns = "http://www.w3.org/ns/wsdl" xmlns : tns = "http://www.tmsws.com/wsdl20sample" xmlns : whttp = "http://schemas.xmlsoap.org/wsdl/http/" xmlns : wsoap = "http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace = "http://www.tmsws.com/wsdl20sample" > < ! -- Abstract type -- > < types > < xs : schema xmlns : xs = "http://www.w3.org/2001/XMLSchema" xmlns = "http://www.tmsws.com/wsdl20sample" targetNamespace = "http://crunchify.com/wsdl20" > < xs : element name = "request" > . . . add your code here . . . < / xs : element > < xs : element name = "response" > . . . add your code here . . . < / xs : element > < / xs : schema > < / types > < ! -- Abstract interfaces -- > < interface name = "CrunchifyItem" > < fault name = "ErrorDescription" element = "tns:response" / > < operation name = "Get" pattern = "http://www.w3.org/ns/wsdl/in-out" > < input messageLabel = "In" element = "tns:request" / > < output messageLabel = "Out" element = "tns:response" / > < / operation > < / interface > < ! -- Concrete Binding Over HTTP -- > < binding name = "HttpBinding" interface = "tns:CrunchifyItem" type = "http://www.w3.org/ns/wsdl/http" > < operation ref = "tns:Get" whttp : method = "GET" / > < / binding > < ! -- Concrete Binding with SOAP -- > < binding name = "SoapBinding" interface = "tns:CrunchifyItem" type = "http://www.w3.org/ns/wsdl/soap" wsoap : protocol = "http://www.w3.org/2003/05/soap/bindings/HTTP/" wsoap : mepDefault = "http://www.w3.org/2003/05/soap/mep/request-response" > < operation ref = "tns:Get" / > < / binding > < ! -- Web Service offering endpoints for both bindings -- > < service name = "ServiceOne" interface = "tns:CrunchifyItem" > < endpoint name = "HttpEndpoint" binding = "tns:HttpBinding" address = "http://www.example.com/rest/" / > < endpoint name = "SoapEndpoint" binding = "tns:SoapBinding" address = "http://crunchify.com/soap/" / > < / service > < / definitions > |
Factory Design Pattern anhand eines Beispiels erklärt.

Lassen Sie mich wissen, wenn Sie Fragen haben.