Académique Documents
Professionnel Documents
Culture Documents
➢ Protocole SOAP
➢ L'annuaire UDDI
Service Web (selon W3C) : est un système logiciel identifié par un URI (Unified Resource
Identifier), dont les interfaces publiques et les liaisons sont définis et décris en utilisant XML.
Il peut interagir avec d’autres systèmes logiciels d’une manière prédéfinie par sa
définition, en utilisant des messages basés sur XML, acheminés par des protocoles internet.
4 Les caractéristiques des services web
• Les standards
– WSDL : Décrit les contrats des services
– SOAP : Achemine les messages entre fournisseur et demandeur de services
– Norme UDDI : spécifie la structure des annuaires de services
Qu’est ce qu’un Service (au sens SOA) ?
7
• Un service est une fonction qui reçoit des messages et qui les
restitue après traitement.
Structure et éléments:
➢ Sensibilité à la casse: les
<?xml version="1.0"?> Déclaration XML (optionnel) éléments d'extrémité doivent
<contact-info> être exactement les mêmes
<nom>JEMAL</nom> Elément racine <prenom>…</prenom>.
<prenom>HANEN</prenom> (obligatoire)
<adresse> <contact-info>… ➢ Hiérarchie des éléments: Un
<rue>1256 </rue> élément XML peut contenir
</ contact-info>
<maison>12</maison> plusieurs éléments XML en tant
<codeP>3000</codeP>
que ses enfants, mais les
<ville>Sfax</ville> Elément / balise/ nœud
</adresse> éléments des enfants ne doit
<prenom>…</prenom> pas se chevaucher, c.à.d. une
<tel>(216) 123-4567</tel>
Un élément peut être vide: balise d'un élément à la fin de
</contact-info>
<element /> la hiérarchie doit avoir le
1
même nom que celui de la
balise au début.
Hiérarchie d’éléments
8
19 XML (eXtensible Markup Language)
Structuration d’un document XML (2/2)
Attributs d’élément:
Les attributs sont utilisés pour distinguer les éléments du même nom.
Un attribut spécifie une propriété unique pour l'élément, en utilisant une paire nom / valeur
(entre des cotes).
Un élément peut avoir plusieurs attributs:
<element atta="x" attb="y" …>....</element>
Exemple élément non vide avec attributs:
<adresse ville="Sfax" codeP="3000" >Rue 1235 maison 12</adresse>
Ou élément vide avec attributs:
<adresse rue="1235" maison= "12" codeP="3000" ville="Sfax" />
20 Les espaces de noms (1/4)
<etudiant> <departement>
<id>E0000001</id> <id>D001</id>
<nom>Smith</nom> <nom>ingénieur</nom>
<prenom>John </prenom> </departement>
</etudiant>
<universite>
<departement>
<id>D001</id>
<nom>ingénieur</nom>
→Confusion sur le sens <etudiant>
des éléments id et nom <id>E0000001</id>
lors de fusion de deux <nom>Smith</nom>
documents <prenom>John </prenom>
</etudiant>
</departement>
</universite>
21 Les espaces de noms (2/4)
• Un document XML peut contenir des éléments et des attributs qui
correspondent à plusieurs domaines distincts (i.e., à plusieurs
dialectes).
• Problème : comment gérer les collisions des noms?
• Solution => Les espaces de noms (namespaces) :
• Les espaces de noms (XML namespaces) sont une recommandation du W3C
pour résoudre le problème de conflits de noms dans un document xml.
• principes :
• chaque collection est identifiée par un URI
• Chaque élément est préfixé par un nom qui identifie le nom de domaine
22
WSDL (Web Services Description Language): est une grammaire XML permettant de décrire
l’interface d’utilisation d’un Web Service.
UDDI (Universal Description Discovery and Integration): UDDI est un registre mondial conçu pour
héberger des informations sur les entreprises et leurs services de façon structurée.
SOAP (Simple Oriented Architecture Protocol): est un protocole permettant l’invocation de
méthodes à distance par l’échange de messages XML.
34 Technologies (3/3):
Scénario complet
Acronyme initialement pour Simple Object Access Protocol, changé dans sa version
1.2 vers 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
Peut éventuellement passer par des nœuds intermédiaires (autres services intermédiaires)
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, FTP…
37 Présentation du SOAP
• SOAP est le protocole standard pour décrire les messages en
XML avec services web.
input input
fault
in-out in-optional-out
Équivalent à requête/réponse : le consommateur initie la Un échange à deux directions standard où une réponse du
requête, le fournisseur répond par un message ou une erreur. fournisseur est optionnelle.
Protocole de
transport: ex. HTTP
SOAP ENVELOPPE
Envelope
SOAP HEADER
🞑 Contenant un message,
🞑 Élément racine XML, HEADER ENTRY
Header (optionnel)
🞑 Ex : Numéros de session.
SOASO
P AEN
P VBEOLDOYPE
Body (obligatoire)
🞑 Ex : nom des méthodes,
nom des paramètres, BODY ENTRY
valeurs de paramètres
4
4
45 Structure d’un message SOAP (2/2)
<SOAP-ENV :Envelope>
<SOAP-ENV :Header>
... entête...
</SOAP-ENV :Header>
<SOAP-ENV :Body>
... Corps du message...
</SOAP-ENV :Body>
</SOAP-ENV :Envelope>
4
5
46
L’enveloppe d’un message SOAP
• L’enveloppe: Élément obligatoire dans un message SOAP
– Il permet de spécifier la version de SOAP utilisée et l’espace de
nommage http://www.w3.org/2003/05/soap-envelope
– Il permet aussi de spécifier les règles d’encodage utilisés par le
message
<?xml version="1.0"?>
< SOAP-ENV:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-
envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<SOAP-ENV :Body>
!!Contenu de la requête!!
</ SOAP-ENV:Body>
</SOAP-ENV :Envelope>
4
6
47 Exemple d’enveloppe SOAP
Par exemple, l'élément d'en-tête peut être utilisé pour spécifier une
signature numérique pour les services protégés par mot de passe. De
même, il peut être utilisé pour spécifier un numéro de compte pour les
services SOAP pay-per-use.
49 L’entête d’un message SOAP
• L’en-tête est défini par la balise <SOAP-ENV:Header>
• L’élément peut être facultatif
• il contient des métadonnées pour l'exécution du service et qui peuvent être
interprétées (ou non) par le serveur
– L’en-tête d’un message SOAP est utilisé pour transmettre des informations
supplémentaires sur ce même message :
• Transactions,
• sessions,
• Actor,
• L’attribut mustUnderstand
–Si absent ou = 0
» l’élément est optionnel pour l’application réceptrice
–Si =1
»l’élément doit être compris de l’application réceptrice. Sinon le
traitement du message par le récepteur doit échouer.
50 Header - Entête SOAP (2/2)
<soap:Header>
<!- - Elément User: à destination du nœud RightsManager - ->
<m:User xmlns:m="http://www.monsite.com/rights"
soap:actor="http://www.monsite.com/rights/RightsManager">
Admin
</m:User>
<!- - Elément Lang: à destination du nœud suivant- ->
<m:Lang xmlns:m="http://www.monsite.com/lang/"
soap:actor="http:Llschemas.xmlsoap.org/soap/next"
soap:mustUnderstand= "0"
FR
</m:Lang>
<!- - Elément Session: à destination du nœud final - ->
<m:Session xmlns:m="http://www.monsite.com/session/"
soap:mustUnderstand= "1" >
12AE3C
</m:Session>
</soap:Header>
52 Corps SOAP (Body)
➢ RPC:
public int add(int num1, int num2)
➢ Document:
soapenv:body>
<
public Document add(Document operation)
<ns:add>
<soapenv:body>
<num1 xsi:type=“xsd:int”>
<ns:operation>
10
<add>10</add>
</num1>
<add>8</add>
<num2
xsi:type=“xsd:int”>8</num2> </ns:operation>
</ns:add> </soapenv:body>
</soapenv:body>
57 Encodage des messages SOAP
<soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://ws.test.com/">
<soapenv:Body>
<ws:additionner>
<ws:valeursAddition>
<valeur1>20</valeur1>
<valeur2>30</valeur2>
</ws:valeursAddition>
</ws:additionner>
</soapenv:Body>
</soapenv:Envelope>
62 Le style RPC vs le style Document
• Remote procedure call : (RPC) permet
l'invocation d'opérations
– Le corps du document contient obligatoirement le
nom de la méthode invoquée et les données
correspondent aux arguments de cette méthode.
6
2
63 Le style RPC d’un message SOAP
• Les messages
contiennent le nom de
l'opération
• La requête/Réponse est
modélisée comme une
structure dont le nœud
le plus externe est le
nom de l'opération et
les nœuds contenus
sont les paramètres
6
3
64 Le style document d’un message SOAP
• Les messages ne
contiennent pas le nom
de l'opération
• Le contenu du corps de
l'enveloppe peut être
validé puisque tous les
éléments sont définis
dans un schéma
6
4
65
Le langage de description WSDL
Chapitre 2 - Services Web
66 C’est quoi le WSDL?
6
6
67 WSDL - Web Services Description Language
la localisation du service
6
8
Structure du fichier WSDL
69 <definitions>
<types>
définition des types........
</types>
<message>
définition des messages ....
</message>
<portType>
définition des ports (opérations et messages).......
</portType>
<binding>
Les protocoles de communication utilisés par le web-service
</binding>
<service>
Une adresse physique où accéder au service.
</service>
</definitions>
-4-
70 Elément <definitions> (1/2)
• Il contient les namespaces faisant référence aux types des élements utilisés dans le document.
o wsdl : http://schemas.xmlsoap.org/wsdl/WSDL
namespace pour le framework WSDL.
o soap : http://schemas.xmlsoap.org/wsdl/soap/WSDL
namespace pour le binding WSDL SOAP.
o http : http://schemas.xmlsoap.org/wsdl/http/WSDL
namespace pour le binding WSDL HTTP GET & POST.
o mime : http://schemas.xmlsoap.org/wsdl/mime/ WSDL
namespace pour le binding WSDL MIME.
o soapenc : http://schemas.xmlsoap.org/soap/encoding/
namespace d’encodage SOAP 1.1.
o soapenv : http://schemas.xmlsoap.org/soap/envelope/
namespace de définition de l’enveloppe SOAP 1.1.
o xsi : http://www.w3.org/2000/10/XMLSchema-instance
namespace d’instance XSD.
o xsd : http://www.w3.org/2000/10/XMLSchema
namespace de schéma XSD .
o tns : “this namespace” (tns) référence le document courant par convention.
7
0
71 Elément <definitions> (2/2)
L’entête d’un document WSDL comporte des références à
différents espaces de nommage (namespace) identifiés par
une URL et un préfixe:
72 Eléments d’un document WSDL
Types
PortTypes
Messages
Binding
Service
Port
Opération
73 WSDL : Types
7
4
75 Élement <operation>
• Chaque opération est essentiellement définie par ses messages
• Trois types d'opération selon
le séquencement et la nature
des messages:
– Requête/réponse
(ex: "Quel prix ?" ; "150€" )
– Notification (sortie) :
(ex: "Délai dépassé, transaction
abandonnée" )
– Sollicitation (entrée)
(ex: "Annulation de transaction" )
7
5
76 Elément <portype> (1/2)
• Ensemble d’opérations
– Groupes de messages à envoyer/recevoir
• Fonctionnalité proche des interfaces Java
• Ensemble d’opérations
– Groupes de messages à envoyer/recevoir
• Message(name, (part()))
– Deux types de message Input et Output.
– Peut être composé de plusieurs parties (Parts) correspondant
aux paramètres passés aux fonctions.
• Part(nom, type)
– Il peut être défini comme un type ( simple ou complexe)
– L’ordre des « parts » dépend de la signature de la méthode
8
1
82 Elément <message> (2/2)
83 WSDL : Binding
Binding:
o Protocole de transport, ex:
SOAP 1.1 over HTTP
o Style du service (RPC ou
Document)
o Format de données concrets
pour un port type (litteral ou
encoded)
8
4
85 Elément <binding> (2/3)
• Binding(name, type, (soap:binding, style, transport),(operation(soap:operation,
soap:action (input(soap:boby, encodingStyle, namespace, use),
output(soap:boby, encodingStyle, namespace, use))
– Nom de binding
– Le type permet de spécifier le portType( classe) auquel on fait référence
– soap :binding permet de déterminer le protocole d’invocation utilisé
– Style: permet de préciser si le message( body de soap) contient des données ou
un document xml
– Transport spécifie le protocole d’invocation.
– soap:action précise le contenu de l’entête du message d’invocation SOAP
– soap:body précise la forme des « messages parts » présents dans le corps du
message SOAP.
– Use est utilisé pour spécifier la forme des données, un namespace (encoded) ou
des paramètres (literal)
8
5
86 Elément <binding> (3/3)
87 WSDL : Port & Service
Port:
o Définit une extrémité de communication unique
o Adresse de l’extrémité pour le binding
o URL (pour HTTP), email (pour SMTP)
Service : collection de ports
o Pour chaque protocole de transport supporté, il existe un seul port relative à un
binding.
o Fournit aussi la documentation lisible par l'homme
88 Elément <service>
8
8
89 WSDL : structure
8
9
90 WSDL
91 Représentation types de données
en XSD
92
L’annuaire UDDI
Chapitre 2 – Services Web