Vous êtes sur la page 1sur 41

Les architectures orientées services

Chapitre 5 :
Les Services Web SOAP

hamdi.aloulou@isima.u-monastir.tn
Introduction
› Il existe deux types de Services Web les plus connus :

– Les Services Web REST (aussi appelés Web API)

– Les Services Web SOAP (aussi appelés Big Web


Services)

› Les services web se basent principalement sur le


protocole HTTP et les langages XML et JSON
2
REST VS SOAP

3
Services Web SOAP VS REST
Carte Postale Vs. Courrier

4
Services Web SOAP VS REST
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<ns2:hello xmlns:ns2="http://services.bibliotheque.isima.rnu.tn/">
<name>Licence LCS</name>
</ns2:hello>
</S:Body>
</S:Envelope>

SOAP
Client Serveur

GET http://localhost:8080/Bibliotheque/Livre/{id}

REST
Client Serveur
Services Web SOAP VS REST
SOAP
➔ Avantages
➔ Cible l’appel de service
➔ Standardisé
➔ Sécurité (WS-Security)

➔ Inconvénients
➔ Performances
➔ Complexité, lourdeur
Services Web SOAP VS REST
REST
➔ Avantages
➔ Cible l’appel de ressources
➔ Simplicité de mise en œuvre
➔ Lisibilité par un humain
➔ Repose sur les principes du web
➔ Représentations multiples (XML, JSON,…)

➔ Inconvénients
➔ Destiné pour la manipulation des ressouces
➔ Sécurité restreinte par l’emploi des méthodes HTTP
Le principe des services
web SOAP

16
Les services web SOAP
Service Oriented Architecture Protocol
› Un message SOAP
– Permet la transmission d’un message au format XML

– Va d’un nœud émetteur vers un nœud receveur

› SOAP s’appuie sur :


– XML et XML Schema pour la représentation des messages

– Les protocoles internet classiques pour la transmission des


messages HTTP, SMTP, JMS, FTP…
17
L’Idée des Services Web SOAP
› Web service : Un objet créé avec un langage quelconque /
Une class avec des méthodes qui peuvent être invoqué à
distance.

› Un client quelconque pour qu’il puisse invoqué les méthodes


il doit envoyer une requête SOAP.

› Une Requête SOAP c’est une requête HTTP mais avec le


corps de la requête contient un message XML avec une
structure bien défini. 18
L’Idée des Services Web SOAP
› Au niveau de serveur il y a des api qui sont capables de lire
ce message. (pour JAVA il y a par exemple JaxWS).

› La réponse est envoyé par une requête HTTP. Pareil dans la


requête de réponse j’envoie une message XML

› Donc SOAP c’est échanger des messages XML entre les


applications.

19
L’Idée des Services Web SOAP
(POST)

(POST)

21
La méthode HTTP pour les Web Service SOAP
› SOAP:
– POST : La méthode utilisé pour envoyer la requête SOAP et
recevoir la réponse SOAP.

22
Web Service : Requête SOAP avec POST
POST /Nom_Script HTTP/1.0
Accect :text/html
Entête de la requête
Accept-Language : fr
User-Agent : Mozilla/4.0

***saut de ligne ***

<SOAP-ENV:Envelope xmlns SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”>


<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<conversion xmlns=“http://bk/test”>
<montant xmlns=“”>12</montant>
</conversion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
23
Corps de la requête
Web Service : Réponse SOAP avec POST
HTTP/1.0 200 OK
Date : Wed, 05Feb18 16:42:30 GMT
Server : Apache/1.3.24 Entête de la réponse
Last-Modified : Wed 02Oct17 23:50:01 GMT
Content-Type : Text/html
Content-length : 4205
***saut de ligne ***
</xml version=“1.0” ?>
<SOAP-ENV:Envelope xmlns SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”
xmlns xsd=“http://www.w3.org/2001/XMLSchema” xmlns ns1=“http://bk/test”>
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:conversionResponse>
<return>132.0</return>
</ns1:conversionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
24
Corps de la réponse
Concepts des Services Web SOAP

› Le concept des Web Services s’articule actuellement

autour des trois concepts suivants :

– SOAP (Simple Object Access Protocol)

– WSDL (Web Services Description Language)

– UDDI (Universal Description, Discovery and Integration)

25
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement
autour des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
› protocole d'échange inter-applications
› indépendant de toute plate-forme,
› basé sur le langage XML.
› Un appel SOAP est transporté dans le protocole HTTP.
– WSDL (Web Services Description Language)
– UDDI (Universal Description, Discovery and Integration)

26
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement
autour des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
– WSDL (Web Services Description Language)
› Description au format XML des Web Services
› Pour qu’un client puisse faire appel à un WS, il a besoin de
savoir son nom, le nom des méthodes et les paramètres d’entré
et de sortie de chaque méthode. C’est la raison pour laquelle
dans les web services il y a ce qu’on appelle les WSDLs.
› Précise les méthodes pouvant être invoquées, leurs signatures
et le point d’accès (URL, port, etc..).
– UDDI (Universal Description, Discovery and Integration) 27
Concepts des Services Web SOAP
› Le concept des Web Services s’articule actuellement
autour des trois concepts suivants :
– SOAP (Simple Object Access Protocol)
– WSDL (Web Services Description Language)
– UDDI (Universal Description, Discovery and Integration)
› Annuaire de Web Services, permettant à la fois la publication et
la recherche des Web Services.
› UDDI se comporte lui-même comme un Web Service dont les
méthodes sont appelées via le protocole SOAP.
› On utilise l’annuaire dans le cas où on ne connait pas encore
où se trouve le WS. Si on a besoin d’un WS, et qu’on ne connait
pas où on va le trouver, on peut utiliser un annuaire pour
récupérer l’adresse des WS.
28
L’Idée des Services Web SOAP
2: J’ai trouvé! Voici le serveur
hébergeant ce service web Contrat
UDDI SOAP
(WSDL)
3: Quel est le format d’appel du
service que tu propose
un service web
1: Je cherche

XML 4: Voici mon contrat (WSDL)

Client Serveur
XML

5: J’ai compris comment invoquer ton


service. Je t’envoie un document XML
représentant ma requête SOAP WS

6: J’ai exécuté ta requête et je te retourne le résultat 29


(réponse SOAP)
Le protocole SOAP

30
Structure d’un message SOAP
Structure d’un message SOAP

PROTOCOLE HEADER Protocole de transport ex:


HTTP
PROTOCOLE BODY
SOAP Envelope Définit le document XML
comme un message SOAP
SOAP Header
Optionnelle: Stockage des
informations spécifiques à la
SOAP Body
PROTOCOLE BODY transaction

Contenant des données à


transporter
SOAP Fault
Gestion d’erreurs

31
Structure d’un document SOAP
› Dans SOAP, les messages sont vus comme des enveloppes où
l’application renferme les données à envoyer
› Soap:envelope (Fr. enveloppe) (obligatoire)
– Est l'élément racine d’un message SOAP.
› Soap:header (Fr. entête) (Optionnel)
– est une partie facultative qui peut contenir des informations comme des
identifiants.
› Soap:body (Fr. corps) (Obligatoire)
– est un container qui contient les méthodes et les paramètres qui seront
exécutés par le destinataire final / La réponse de la méthode invoquée
› Soap:fault (Fr. erreur) (Optionnel)
– est un élément facultatif défini dans le corps SOAP et qui est utilisé pour
reporter les erreurs. 32
Entête SOAP (Header)
› Paramètres annexes : Propriétés du message
– Informations d’authentification

– Informations liées aux transactions


<soap:Envelope xmlns:soap="...">
<soap:Header>
<UsernameToken xmlns="http://abc.com/webservices">
user
</UsernameToken>
<PasswordText xmlns="http://abc.com/webservices">
hello123
</PasswordText>
</soap:Header>
<soap:Body><!-- data goes here --></soap:Body>
</soap:Envelope>
33
Corps SOAP (Body)
› Endroit où les données spécifiques à l’application, et qui
doivent être échangées, sont placées
› L’élément Body est obligatoire, mais peut être vide.
› Il peut contenir plusieurs fils (appelés des entrées), qui
peuvent être:
– Données spécifiques à l’application: information échangée dans le
WS. Représentée par une méthode et ses arguments (requête) ou
une ou plusieurs valeurs (réponses)
– Message d’erreur : utilisé en cas d’erreur.
› Un message SOAP contient des données ou un message
d’erreur, mais pas les deux à la fois.
34
Exemple de Message SOAP (Request)
<?xml version=‘1.0’ ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<Commande xmlns="http://www.glaces.com">
<parfum>Fraise</parfum>
<quantite>16</quantite>
<livraison>
<adresse>8 bvd N.Bohr Villeurbanne</adresse>
<destination>M2TI</destination>
</livraison>
</commande>
</env:Body>
</env:Envelope>
35
Exemple de Message SOAP (Response)

<?xml version=‘1.0’ ?>


<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header/>
<env:Body>
<confirmation xmlns="http://www.glace.com">
<heure>10h</heure>
</confirmation>
</env:Body>
</env:Envelope>

36
Fautes SOAP
› Utilisé lorsqu’une erreur survient
– En général dans une réponse à un message reçu auparavant

› Se place dans la partie Body

› Le contenu est une explication de l’erreur:


– Une valeur
– Une explication textuelle
– Un morceau de document spécifique à l’application
– Le rôle du nœud à l’origine de l’erreur
› Utile en présence de nœuds intermédiaires
37
Exemple de Faute SOAP
<?xml version = '1.0' ?>
<env:Envelope
xmlns:env = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/1999/XMLSchema">
<env:Body>
<env:Fault>
<faultcode xsi:type = "xsd:string">
env:Client
</faultcode>
<faultstring xsi:type = "xsd:string">
Failed to locate method (ValidateCreditCard) in class (examplesCreditCard)
</faultstring>
</env:Fault>
</env:Body>
38
</env:Envelope>
Le fichier de description
WSDL

39
WSDL
Web Services Description Language
› C’est un langage décrivant comment s’interfacer avec des
services web basés sur XML.

› Décrit comment accéder à un service Web et quelle sont les


opérations qu’on pourra effectuer.

› Se compose d'un ensemble d'éléments décrivant les types de


données utilisés par le service, les messages que le service
peut recevoir, ainsi que les liaisons SOAP associées à chaque
message. 40
WSDL
Structure d’un document WSDL
Definitions
Types Element

+ Message Part
Input

PortType + Operation Output

SOAPBinding SOAPOperation
Binding
Operation Input
Output
Documentation
Service

Port SOAPAddress

Structure d’un document WSDL 41


WSDL
Structure d’un document WSDL
<definitions>
<types>
définition des types........
</types>
<message>
définition d’un message....
</message>
<portType>
<operation>
définition d’une opération.......
</operation>
</portType>
<binding>
définition d’un binding....
</binding>
<service>
définition d’un service....
</service>
</definitions>
42
WSDL
Structure d’un document WSDL
› Un fichier WSDL contient donc les éléments.
– Definitions : C'est l'élément racine de tous les documents WSDL. Il
définit le nom du service Web, déclare plusieurs espaces de noms
utilisés dans le reste du document et contient tous les autres éléments.

– Service : indique les adresses de port de chaque liaison.

– Port : représente un point d'accès de services défini par une adresse


réseau et une liaison.

– Binding : spécifie une liaison entre un <portType> et un protocole


concret (SOAP, HTTP...).
43
WSDL
Structure d’un document WSDL
› Un fichier WSDL contient donc les éléments.
– PortType : décrit un ensemble d'opérations. Chaque opération a zéro ou
un message en entrée, zéro ou plusieurs messages de sortie ou
d'erreurs.
– Operation : c'est la description d'une action (méthode) exposée dans le
port.
– Message : représente une définition abstraire (noms et types) des
données en entrée et en sortie de la méthode.
– Type : fournit la définition de types de données utilisés pour décrire les
messages échangés. 44
Exemple

45
Exemple

46
Exemple

47
Exercices

50
Exercice
› Qu’elle est l’usage classique de HTTP ?

› HTTP est-il classiquement un protocole d'appel de procédure


distante (justifiez votre réponse) ?

› Quelles sont les différentes méthodes offertes en HTTP ?

› Quels avantages voyez-vous à la réalisation de communications


SOAP en utilisant le protocole HTTP ?

› Quels sont les avantages de l’utilisation de XML pour représenter


la structure des messages échangés en SOAP ?
51
Exercice
Préciser le nom de la méthode invoquée et les paramètres d’appel de ce message SOAP
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" >
<env:Header/>
<env:Body>
<m:chargeReservation xmlns:m="http://travelcompany.example.org/">
<m:reservation xmlns:m="http://travelcompany.example.org/reservation">
<m:code>FT35ZBQ</m:code>
</m:reservation>
<o:creditCard xmlns:o="http://mycompany.example.com/financial">
<n:name xmlns:n="http://mycompany.example.com/employees">Åke
Jógvan Øyvind</n:name>
<o:number>123456789099999</o:number>
<o:expiration>2005-02</o:expiration>
</o:creditCard>
</m:chargeReservation>
</env:Body>
</env:Envelope>
52

Vous aimerez peut-être aussi