Vous êtes sur la page 1sur 26

WSDL

Module SOA
A.U 2017-2018

1
Objectifs

Comprendre la structure et les différents éléments d’un


document WSDL

2
Introduction
Un service web en action

1: Publication du service web

Annuaire UDDI
4: Quel est le format d’appel du service que tu
3: Voici les cordonnées proposes?
2: Je cherche un service web

5: Voici mon contrat

WSDL
du serveur

6: Requête

Client SOAP Fournisseur

7: Réponse

3
Introduction

Afin de mettre en œuvre un service web, trois composants sont nécessaires :

• Un langage pour décrire le service web: WSDL

• Un protocole de communication pour écrire les messages échangés entre le


consommateur et le fournisseur: SOAP

• Un protocole de transport afin de faire circuler les informations sur Internet

4
Présentation de WSDL

• Web Service Description Language


• Un langage de description des services web
• Une spécification W3C
• Basé sur XML
• Une description de type « boîte noire » du sevice web:
• Quelles sont les opérations disponibles, leurs entrées, leur sorties, leur
types?
• Comment y accéder : adresse(s), protocole(s) utilisé(s),…
• Quel est le format des échanges : les messages (requête/réponse)

5
Structure d’un contrat WSDL
Un document WSDL se structure en 2 parties :
Une description concrète Contrat WSDL
Définition du protocole d'accès et de l’URI
à partir de laquelle on peut accéder au
service web
Une description abstraite
nom des opérations, paramètres d'entrée,
de sortie, structure des messages

6
Structure d’un contrat WSDL
Avantages d'une structuration en 2 parties :
On peut associer la description abstraite avec plusieurs descriptions concrètes.
➔ Réutilisabilité de la description abstraite
Contrat WSDL

Partie abstraite

Deux parties concrètes sont


associées avec la même partie
abstraite.
Partie concrète Partie concrète

Protocole d’accès
HTTP SMTP
Localisation URL1 URL2

7
Les éléments WSDL
• Le document WSDL contient 7 éléments :
service
Description concrète
port
Elément de liaison entre la description binding
abstraite et concrète
port types

operations
Description abstraite
messages

types

8
Les éléments WSDL

 Partie abstraite

• Types
service
• Contient la définition des types de données à transmettre
port
• Exprimé en XSD
binding

port types

operations

messages

types

9
Les éléments WSDL
 Partie abstraite
• Types
Exemple:
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.webservicex.net">
<s:element name="Translate">
<s:complexType>
<s:sequence> Translate
<s:element name="LanguageMode" type="tns:Language"/>
<s:element name="Text" type="s:string"/> LangageMode: Langage
</s:sequence> Text: String
</s:complexType>
</s:element>
<s:simpleType name="Language">
<s:restriction base="s:string">
<s:enumeration value="EnglishTOFrench"/>
<s:enumeration value="EnglishTOGerman"/>
<s:enumeration value="EnglishTOItalian"/>
</s:restriction>
</s:simpleType>
<s:element name="TranslateResponse"> TranslateResponse
<s:complexType>
<s:sequence> TranslateResult: String
<s:element name="TranslateResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types> 10
Les éléments WSDL
 Partie abstraite
• Messages
- Contient la description des messages échangés avec le service web
 Paramètres d’entrée des opérations
 Paramètres de sortie

<wsdl:message name="TranslateInput">
service
<wsdl:part name="parameters" element="tns:Translate"/>
</wsdl:message>
<wsdl:message name="TranslateOutput"> port
<wsdl:part name="parameters" element="tns:TranslateResponse"/>
</wsdl:message> binding

message: TranslateInput port types


Translate
operations
LangageMode: Langage
Text: String
messages

message: TranslateOutput types


TranslateResponse
TranslateResult: String

11
Les éléments WSDL
 Partie abstraite
• Operations
- Une opération est comparable à une méthode en Java
 Est identifiée par un nom
 Contient ou non une ou plusieurs entrée(s)
Contient ou non une ou plusieurs sorties

<wsdl:operation name="Translate">
<wsdl:input message="tns:TranslateInput"/> service
<wsdl:output message="tns:TranslateOutput"/>
</wsdl:operation> port

binding
message: TranslateInput
port types
Translate
operation:
LangageMode: Langage operations
Text: String
Translate messages
message: TranslateOutput types
TranslateResponse
TranslateResult: String

12
Les éléments WSDL
 Partie abstraite
• Portype
- Un portype est comparable à une interface en Java
 Est identifiée par un nom
 Contient un ensemble d’opérations

<wsdl:portType name="TranslateServiceSoap">
<wsdl:operation name="Translate"> service
<wsdl:input message="tns:TranslateInput"/>
<wsdl:output message="tns:TranslateOutput"/>
port
</wsdl:operation>
</wsdl:portType>
binding

port types
portype: TranslateServiceSoap
operations
operation:
Translate messages

types

13
Les éléments WSDL
 Partie concrète
• binding
- Permet de définir pour un portype
 Le format des messages échangés
 Le protocole de transport (HTTP, SMTP, FTP, …)
- On peut associer plusieurs binding à un même portype

binding: binding: service

SOAP/HTTP SOAP/SMTP port

binding

portype: port types


TranslateServiceSoap
operations
operation:
Translate messages

types
operation:

14
Les éléments WSDL
 Partie concrète
• binding

<wsdl:binding name="TranslateServiceBinding" type="tns:TranslateServiceSoap">


<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Translate">
<soap:operation soapAction="http://www.webservicex.net/Translate" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

Protocole de transport des messages SOAP

Format des messages échangés

WSDL
15
Les éléments WSDL
 Partie concrète
• binding
Deux bindings pour un même portype

<wsdl:binding name="TranslateServiceBinding1" type="tns:TranslateServiceSoap">


<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Translate"> Un 1er binding qui définit le protocole HTTP pour le
… transport des messages SOAP
<wsdl:/operation>
</wsdl:binding>
<wsdl:binding name=" TranslateServiceBinding2" type="tns:TranslateServiceSoap/>
<soap:binding transport="http://stockquote.com/smtp"/>
<wsdl:operation name="Translate"> Un 2ème binding qui définit le protocole SMTP pour
… le transport des messages SOAP
<wsdl:/operation>
</binding>

WSDL
16
Les éléments WSDL
 Partie concrète
• Port
Permet de spécifier une adresse pour un binding donné
port: port:

URI URI
service

binding: binding: port

SOAP/HTTP SOAP/SMTP binding

port types

portype: operations

TranslateServiceSoap messages

operation: types
Translate
operation:

17
Les éléments WSDL
 Partie concrète
• service

Contient une collection de ports.

<wsdl:service name="TranslateService">
<wsdl:port name="TranslateServiceSoap1" binding="tns:TranslateServiceBinding1"> service
<soap:address location="http://www.webservicex.net/TranslateService.asmx"/>
</wsdl:port> port
<wsdl:port name="TranslateServiceSoap2" binding="tns:TranslateServiceBinding2">
<soap:address location="mailto:subscribe@translate.com"/> binding
</wsdl:port>
</wsdl:service> port types

operations

messages

types

18
Résumé

19
Les messages SOAP
(Simple Object Access Protocol)
SOAP message Message complet
HTTP headers Entête standard HTTP et entête SOAP HTTP

SOAP Envelope Enveloppe SOAP


Entête Elément optionnel
SOAP header
Contient des entrées non applicatives
Headers Entête individuelle (transactions, session, …)

Corps contenant les appels de Contient les entrées du


SOAP body message
méthodes SOAP
Nom d’une procédure, valeur des
l
Appel de méthode et paramètres, valeur de retour
Method call & data
description en XML des données Peut contenir les éléments «
l

fault » (erreurs)

20
SOAP message

Les messages SOAP HTTP headers

L’enveloppe SOAP SOAP Envelope

SOAP header
<SOAP-ENV:Envelope xmlns:SOAP-
Headers
ENV="http://schemas.xmlsoap.org/soap/envelope">
<SOAP-ENV:Body> SOAP body

<!-- Contenu de la requête--> Message SOAP Method call & data


</SOAP-ENV:Body>
</SOAP-ENV:Envelope> d’une requête

<SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope">
<SOAP-ENV:Body>
<!-- Contenu de la réponse
reponse --> Message SOAP
</SOAP-ENV:Body> d’une réponse
</SOAP-ENV:Envelope>

21
Les messages SOAP
Requête vers le service HelloWorld
Exemple: Appeler les opérations du service HelloWorld
SOAP message
<soap-env:Envelope HTTP headers
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope"
SOAP Envelope
xmlns:hel="http://helloworldservice... .com/">
<soapenv:Header/> SOAP header
<soapenv:Body> Headers

<hel:makeHelloWorld> SOAP body


<value> toto </value> Message SOAP pour appeler
</hel:makeHelloWorld> Method call & data
l’opération makeHelloWorld
</soapenv:Body>
</soapenv:Envelope> contenant un paramètre value

<soap-env:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope"
xmlns:hel="http://helloworldservice... .com/">
<soapenv:Header/>
<soapenv:Body>
<hel:simpleHelloWorld> Message SOAP pour appeler
</hel:simpleHelloWorld> l’opération simpleHelloWorld
</soapenv:Body> ne contenant pas de
</soapenv:Envelope> paramètres
22
Les messages SOAP
Reponse vers le service HelloWorld
Exemple (suite) : Messages retour de l’appel des opérations du service HelloWorld

<soap-env:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">
<soapenv:Body>
<ns2:makeHelloWorldResponse xmlns:ns2="http://helloworldwebservice.... .com/">
<helloWorldResult>Hello World toto </helloWorldResult>
</ns2:makeHelloWorldResponse>
</soapenv:Body>
</soapenv:Envelope>

<soap-env:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">
<soapenv:Body>
<ns2:simpleHelloWorldResponse xmlns:ns2="http://helloworldwebservice.... .com/">
<helloWorldResult>Hello World everybody </helloWorldResult>
</ns2:makeHelloWorldResponse>
</soapenv:Body>
</soapenv:Envelope> 23
Les messages SOAP

Exemple : corps de messages SOAP pour appeler des opérations du service Web Notebook

<soap-env:Envelope <soap-env:Envelope
xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope
xmlns: not="http://notebookwebservice.... .com/"> xmlns: not="http://notebookwebservice.... .com/">
<soapenv:Header/> <soapenv:Header/>

<soapenv:Body> <soapenv:Body>
<not:addPersonWithComplexType> <not:addPersonWithSimpleType>
<newperson> <name>toto</name>
<adress>France</adress> <adress>France</adress>
<birthyear>1980</birthyear> <birthyear>1980</birthyear>
<name>toto</name> </not:addPersonWithSimpleType>
</newperson> </soapenv:Body>
</not:addPersonWithComplexType>
</soapenv:Body>

</soapenv:Envelope> </soapenv:Envelope>

24
Les messages SOAP
Exemple (suite) : corps de messages SOAP pour le résultat des opérations du service Web Notebook
<soap-env:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">
<soapenv:Body>
<ns2:addPersonWithComplexTypeResponse xmlns:ns2="http://notebookwebservice.... .com/">
<addPersonWithComplexTypeResult> true </addPersonWithComplexTypeResult>
</ns2: addPersonWithComplexTypeResponse >
</soapenv:Body>
</soapenv:Envelope>

<soap-env:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">
<soapenv:Body>
<ns2:addPersonWithSimpleTypeResponse xmlns:ns2="http://notebookwebservice.... .com/">
<addPersonWithSimpleTypeResult> true </addPersonWithSimpleTypeResult>
</ns2: addPersonWithSimpleTypeResponse >
</soapenv:Body>
</soapenv:Envelope>

Les paramètres de sorties suivent la même convention que les paramètres d’entrées 25
Références
 http://www.w3.org/TR/wsdl

http://www.webservicex.net/ws/WSDetails.aspx?CATID=12&WSID=63

 http://www.slideshare.net/baronm/wsdl-dcrire-et-configurer-4677823

26

Vous aimerez peut-être aussi