Compréhension de base de la structure WSDL - (langage de description de service Web) expliqué
Publié: 2020-08-24Vous avez peut-être vu mon article précédent sur l'appel SOAP vs REST. Aujourd'hui, un jour, les entreprises passent aux appels de service REST, mais la majorité des entreprises utilisent toujours SOAP plutôt que REST. Ce tutoriel explique les bases de WSDL (Web Service Description Language).
Si vous avez l'une des questions ci-dessous, vous êtes au bon endroit :
- Qu'est-ce que le langage de description de services Web (WSDL) ?
- Tutoriel WSDL
- Langage de description de services Web (WSDL) expliqué
- Exemples de WSDL - Langage de description de service Web
Langage de description de services Web (WSDL)
Dans Java Web Development World, WSDL est un format XML permettant de décrire les services réseau comme un ensemble de points de terminaison fonctionnant sur des messages contenant des informations orientées document ou orientées procédure.
Les opérations et les messages sont décrits de manière abstraite, puis liés à un protocole réseau concret et à un format de message pour définir un point de terminaison. Les points de terminaison concrets associés sont combinés en points de terminaison abstraits (services).
WSDL est extensible pour permettre la description des points de terminaison et de leurs messages, quels que soient les formats de message ou les protocoles réseau utilisés pour communiquer, cependant, les seules liaisons décrites dans ce document décrivent comment utiliser WSDL
en conjonction avec SOAP 1.1, HTTP GET/POST et MIME.

Un autre doit lire:
- Créer un exemple de WSDL dans Eclipse et générer un client
- Comment créer un service RESTful avec Java à l'aide de JAX-RS et de Jersey (exemple)
En d'autres termes : un document WSDL définit les services comme des ensembles de points de terminaison réseau, ou ports
. Dans WSDL, la définition abstraite des points de terminaison et des messages est séparée de leur déploiement réseau concret ou des liaisons de format de données. Cela permet la réutilisation de définitions abstraites : messages
, qui sont des descriptions abstraites des données échangées, et types de port qui sont des collections abstraites d'opérations.
Les spécifications concrètes de protocole et de format de données pour un type de port particulier constituent une binding
réutilisable. Un port est défini en associant une adresse réseau à une liaison réutilisable, et une collection de ports définit un service.
Par conséquent, un document WSDL utilise les éléments suivants dans la définition des services réseau :
-
Types
- un conteneur pour les définitions de types de données utilisant un système de type (tel queXSD
). -
Message
– une définition abstraite et typée des données communiquées. -
Operation
– une description abstraite d'une action prise en charge par le service. -
Port Type
– un ensemble abstrait d'opérations prises en charge par un ou plusieurs points de terminaison. -
Binding
- une spécification concrète de protocole et de format de données pour un type de port particulier. -
Port
– un point de terminaison unique défini comme une combinaison d'une liaison et d'une adresse réseau. -
Service
– une collection de points de terminaison associés.
Élément | La description |
---|---|
<types> | Définit les types de données (schéma XML) utilisés par le service Web |
<message> | Définit les éléments de données pour chaque opération |
<TypePort> | Décrit les opérations pouvant être effectuées et les messages concernés. |
<contraignant> | Définit le protocole et le format de données pour chaque type de port |
Exemple : requête/réponse SOAP 1.1 via HTTP
Exemple de document XML WSDL.
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 > |

Exemple SOAP 2.0 WSDL :
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 > |
Modèle de conception d'usine expliqué avec l'exemple.

Faites moi savoir si vous avez des questions.