Université Abderrahmane Mira de Béjaia
Faculté des Sciences Exactes
Département d’Informatique
Le WSDL
(Cours 3)
Dr H. EL BOUHISSI
Septembre 2023
Objectifs du cours
1 Découvrir le contrat de description d’un Service Web
2 Comprendre les briques de base d’un document WSDL
3 Apprendre comment extraire les informations utiles à partir d’un
document WSDL
2
Plan
1 Définition et Versions
2 Contenu d’un document WSDL
3 Exemples de documents WSDL
3
WSDL : Définition
WSDL signifie Web Service Description Language.
Un métalangage permettant de décrire en détail les services Web. Un service Web est un service mis
à disposition des clients par un serveur via Internet (ou un autre réseau). Les services Web sont
multiplateformes, c’est-à-dire qu’ils fonctionnent avec les systèmes et les applications les plus divers.
Pour qu’un client puisse s’informer sur les possibilités et les processus du service Web, un fichier
WSDL est disponible sur le serveur. Les détails contenus dans le fichier permettent au client de savoir
comment consulter le service Web.
4
WSDL : Définition
Standard du W3C :
Version 1.1 en 2001
Version 2.0 en 2007, encore peu supporté par les outils
Objectif : décrire l'interface publique d'un Web Service (contrat de service)
Grammaire dérivée d’XML
Service Web = ensemble de ports de connexions mettant à disposition des opérations qui reçoivent
et envoient des messages
Regroupe les informations nécessaires pour interagir avec le service (fonctionnelles et techniques) :
•Les méthodes, les paramètres et valeurs retournées, le protocole de transport utilisé, la localisation du service
Document indispensable au déploiement de Services Web
•Publication et recherche de services au sein de l’annuaire se font via les documents WSDL
• Pour l’accès à un service particulier, un client se voit retourné l’URL du fichier WSDL décrivant
l’implémentation du service
5
Eléments du WSDL
<definitions> : racine du document
<types> : Types de données sous format schéma XML
<Part>
<Message> : paramètre, valeur de retour, exception
<Operation>
<portType> : ensemble d’opérations
<binding> : détail technique (protocoles…)
<port> : point d’accès
<service> : ensemble de port et leur binding associés
Description à 2 niveaux: Séparation entre la partie abstraite et concrète 6
WSDL : Version
7
Exemple : service Carnet d’adresses
3 opérations à mettre en œuvre :
• addPerson : Entrée (Person) + Sortie (booléen pour indiquer l’état de création)
• addPerson : Entrées (3 string : name, address et birthyear)
• getPersonByName : Entrée (string) + Sortie (Person)
• getPersons : Sortie (tableau d’objets Person)
Protocole SOAP : pour décrire les messages
Protocole HTTP : pour l’échange de messages
8
WSDL : l’élément types
2 variantes :
• Contient la définition des types de données (Schéma XSD, schéma XML…)
• Facultatif si les types sont simples (Integer, Boolean... )
• Importe un fichier Schéma XML contenant la définition des types
• Avantage : réutiliser des types et d’alléger le fichier WSDL
9
Exemple WSDL : définition des types
10
WSDL : l’élément message
Décrit un message échangé par le service et est défini par les attributs :
- Name : nom du message
- 1 ou plusieurs éléments <part> : inputs/outputs ou
exception d’une opération
Chaque élément <part> est défini par les attributs :
- name : nom du paramètre
- type : type de données du paramètre
11
WSDL : l’élément message
12
WSDL: les éléments portType et opération
Interface contenant les prototypes d’opérations fournies par le service et définie par les attributs :
• Name : nom du portType
• <opération> : 1 ou plusieurs décrivant chacun le prototype d’une méthode fournie par le
service
Chaque élément <opération> est défini par les attributs :
• name : nom de l’opération
• <input message>/<output message>/ <fault> : référence à 1 message décrivant les
paramètres d’E/ S et le message d’erreur de l’opération
13
Exemple WSDL : l’élément portType
14
Types d’échanges assurés par une opération
One-way : Message input sans réponse
Notification : Seul un message <output> est utilisé
Request/Response : <input>, <output> et <fault>
Le service reçoit un message du client et répond à sa
Requête
Solicit - response : <input>, <output> et <fault>
Le client reçoit un message du service et répond au
service
15
WSDL : l’élément binding
Décrit un portType du point de vue technique , les informations sur le protocole de transport utilisé ;
Protocole (SOAP 1.1 ou 1.2, HTTP GET & Post : ex, transfert d’images) utilisé pour manipuler un <portType>
Est défini par les attributs : name : nom du binding , type : portType concerné
Sa structure (éléments qu’ils contient) dépend du protocole utilisé
Plusieurs <binding> peuvent être définis pour appeler un portType de différentes manières
16
WSDL : Binding SOAP
A généralement la forme <soap:binding> et est défini par l’espace de noms :
http://schemas.xmlsoap.org/wsdl/soap/
Utilise les principales balises suivantes :
- <soap:binding>
- <soap:operation>
- <soap:body>, <soap:header>, <soap:headerfault>
- <soap:fault>
17
WSDL : les éléments service et port
Un élément <service> définit les ports (points d’accès) du service
Chaque <port> spécifie 1 adresse pour 1 binding donné.
Un élément <port> est défini par les attributs :
• name : nom du port
• binding : nom du binding (défini précédemment)
La structure de l’élément <port> est spécifique au protocole utilisé dans le binding
- <soap:address> : URI du port dans le cas d’un binding SOAP
Le portType Notebook est accessible
en SOAP/HTTP via cette URL 18
Un autre service : HelloWorld
2 opérations : 1) makeHello : Entrée (string) et Sortie (string) 2) simpleHello : Sortie (string)
Protocole SOAP : pour décrire les messages , et le Protocole HTTP : pour l’échange de messages
19
Un autre service : HelloWorld
20
Exercice
Annoter ce WSDL de vos commentaires :à quoi il sert, comment
s’en servir d’un point de vue client, quelles données vont
circuler quand on l’utilise, etc.
Cliquez ici pour visualiser le Fichier WSDL
21
Solution
Ce service web offre une unique opération : sur envoi d’un message de type GetLastTradePrice,
l’opération nommée GetLastTradePrice va s’exécuter. L’URL pour déclencher cette opération depuis un
navigateur web devrait :
http://example.com/stockquote/method=GetLastPrice?tickerSymbol=MonEntreprisePreferee
Le message sera véhiculé par une enveloppe SOAP (on a défini un soap binding). Le type de donnée
en entrée est un tickerSymbol prenant une valeur de type chaine de caractères. En réponse, on obtient
un price que l’on peut interpréter comme un flottant.
22
Outils pour manipuler des documents WSDL
Edition
Notepad++ (texte : XML)
Eclipse JavaEE
Netbeans
Visual Studio
Environnements de développement de SW
Validation
www.validwsdl.com
Test
SOAPUI
23
En résumé.......................
En résumé WSDL c’est un contrat entre un client et un serveur qui fait état :
• Des spécifications d'interfaces qui décrivent toutes les méthodes publiques,
• Des spécifications relatives aux types de donnée de messages mis en œuvre dans les
questions-réponses.
• Des informations liées au protocole de transport utilisé.
• Des informations d'adresse permettant de localiser le service décrit.
En un mot, WSDL définit le contrat existant entre un client et un serveur sans dépendance
particulière pour une plateforme ou un langage.
24