23
1 Les technologies XML Les technologies XML Cours 6 : Cours 6 : Les Web Services et SOAP Les Web Services et SOAP Mars 2011 Mars 2011 - Version 1.0 - - Version 1.0 -

1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

Embed Size (px)

Citation preview

Page 1: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

1

Les technologies XMLLes technologies XML

Cours 6 : Cours 6 : Les Web Services et SOAPLes Web Services et SOAP

Mars 2011Mars 2011

- Version 1.0 - - Version 1.0 -

Page 2: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

2

Web Services - SOAP Web Services - SOAP

SOAP (Simple Object Access Protocol) est un protocole RPC, orienté objet, bâti sur XML.

Il permet l’invocation de méthode sur des objets Il permet l’invocation de méthode sur des objets distants grâce à l’échange de message XML.distants grâce à l’échange de message XML.

SOAP n'est plus un acronyme depuis la version SOAP n'est plus un acronyme depuis la version 1.2 qui a été réécrite en termes d'infosets XML, 1.2 qui a été réécrite en termes d'infosets XML, et non plus sous forme de sérialisations de et non plus sous forme de sérialisations de document XML. document XML. La notion d'objet (spécifiée La notion d'objet (spécifiée dans Simple OBJECT Access Protocol) dans Simple OBJECT Access Protocol) devient donc obsolètedevient donc obsolète. .

Page 3: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

3

Web Services - SOAPWeb Services - SOAP

Bien que le protocole de transport le plus commun soit http(s), il est possible de l’utiliser sur SMTP, voire tout MOM.

W3C

SOAP : http://www.w3.org/2002/07/soap-translation/soap12-part0.html

InfoSet : http://www.w3.org/TR/xml-infoset.

Page 4: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

4

Web Services - SOAPWeb Services - SOAP

Basé sur la technologie universelle XML par opposition aux Basé sur la technologie universelle XML par opposition aux spécifiques DCOM - DCE/NDR, CORBA - IIOP/CDR, JAVA - spécifiques DCOM - DCE/NDR, CORBA - IIOP/CDR, JAVA - RMI/JRMP, RDA – XDR .RMI/JRMP, RDA – XDR .

Indépendant du langage, modèle objet (jusqu’à la version Indépendant du langage, modèle objet (jusqu’à la version 1.1, système et plate-forme d’hébergement du service 1.1, système et plate-forme d’hébergement du service Web.Web.

Prend en charge les protocoles et formats suivants : HTTP, Prend en charge les protocoles et formats suivants : HTTP, SMTP et MIME (supporte «Multipart MIME»).SMTP et MIME (supporte «Multipart MIME»).

Résolution des problèmes de sécurité :Résolution des problèmes de sécurité :

Les firewalls supportent des ports spécifiques (HTTP, FTP)Les firewalls supportent des ports spécifiques (HTTP, FTP)

La plupart des middlewares assignent des ports dynamiques La plupart des middlewares assignent des ports dynamiques ……

Page 5: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

5

Web Services - SOAPWeb Services - SOAP

Septembre 1999 : SOAP 0.9Septembre 1999 : SOAP 0.9Spécifications par MicroSoft et DevelopMentor

Décembre 1999 : SOAP 1.0Décembre 1999 : SOAP 1.0Soumission des spécifications à l’ IETFAssociation de UserLand

Mai 2000 : SOAP 1.1Mai 2000 : SOAP 1.1Nombreuses associations : IBM, HP, Lotus, Compaq, Intel …XIDL : rapprochement de Corba

Septembre 2000Septembre 2000Groupe de travail W3C pour la standardisation de SOAPCorba/Soap Interworking RFP => SCOAP

Avril 2007 : SOAP 1.2SOAP abandonne le modèle objet pour utiliser XML Infosets

Page 6: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

6

Web Services – SOAP - ExempleWeb Services – SOAP - Exemple

Requête HTTP invoquant une méthode Requête HTTP invoquant une méthode GetOrdersGetOrders : :POST /Orders HTTP/1.1Host: xxx.xxx.xxx.xxxContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "http://www.someorders.com/GetOrders"

<?xml version=“1.0”?><SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAP-ENV:Body><orders:GetOrders

xmlns:orders="http://www.someorders.com/orders"> <CustomerID>ALFKI</CustomerID> <SalesRepID>85</SalesRepID>

</orders:GetOrders></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 7: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

7

Web Services – SOAP - ExempleWeb Services – SOAP - Exemple

Réponse HTTP à la requête précédente :Réponse HTTP à la requête précédente :HTTP/1.1 200 OK MessageType: CallResponse

Content-Type: text/xml

<?xml version=“1.0”?><SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAP-ENV:Body><orders:GetOrdersResponse

xmlns:orders="http://www.someorders.com/orders"> <…… données en retour sous forme XML …..>

</orders:GetOrdersResponse></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 8: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

8

Web Services – SOAPWeb Services – SOAP

Eléments d’un message SOAP :Eléments d’un message SOAP :

EnvelopeEnvelope Élément pouvant contenir des

déclarations d'espaces de noms ou des sous-éléments

Header (optionnel)Header (optionnel) Permet des extensions telles

que authentification, session…

Body (obligatoire)Body (obligatoire) Définit la méthode appelée,

contient les paramètres Peut contenir un élément Fault

en cas d'erreur

Protocol Headers

SOAP Envelope

SOAP Header

SOAP Body

Page 9: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

9

Web Services – SOAPWeb Services – SOAP

NameSpaces 1.1NameSpaces 1.1

Le namespace des balises SOAP : http://schemas.xmlsoap.org/soap/envelope

Le namespace de l’encodage SOAP http://schemas.xmlsoap.org/soap/encoding

NameSpaces 1.2NameSpaces 1.2

Le namespace des balises SOAP : http://www.w3.org/2003/05/soap-envelope/

Le namespace de l’encodage SOAP http://www.w3.org/2003/05/soap-encoding

Page 10: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

10

Web Services – SOAPWeb Services – SOAP

SOAP Header : Mécanisme d’extension du protocole SOAP

La balise Header est optionnelle

Si la balise Header est présente, elle doit être le premier fils de la balise Envelope

La balise Header contient des entrées

Une entrée est n’importe quelle balise incluse dans un namespace. Les entrées contenues dans la balise Header sont non applicatives.

Page 11: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

11

Web Services – SOAPWeb Services – SOAP

ExempleExemple<SOAP-ENV:Header><t:Transaction xmlns:t="some-URI" SOAP-

ENV:mustUnderstand="0">5</t:Transaction></SOAP-ENV:Header>

L’attribut mustUnderstandn Rien ou =0 : l’élément est optionnel pour l’application réceptricen =1 : l’élément doit être compris de l’application réceptrice. Sinon le traitement du message par le récepteur doit échouer.

Page 12: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

12

Web Services – SOAPWeb Services – SOAP

SOAP Body : Le Body contient le message à échanger

La balise Body est obligatoire

La balise Body doit être le premier fils de la balise Envelope (ou le deuxième si il existe une balise Header)

La balise Body contient des entrées qui sont des données applicatives.

Une entrée est n’importe quelle balise incluse optionnellement dans un namespace

Une entrée peut être une Fault.

Page 13: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

13

Web Services – SOAPWeb Services – SOAP

SOAP Fault : Balise permettant de signaler des cas d’erreur.

SOAP 1.1 : La balise Fault contient les balises suivantes:

Faultcode (Obligatoire): un code permettant d’identifier le type d’erreur.Faultstring (Obligatoire): une explication en langage naturel.Faultactor : une information identifiant l’initiateur de l’erreur.Detail : Définition précise de l’erreur.

Page 14: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

14

Web Services – SOAPWeb Services – SOAP

SOAP 1.2 : Code (obligatoire) : Peut être l'un des codes de spécifications prédéfinis ou un code personnalisé pour l'application. Reason (obligatoire) : Chaîne d'explication de l'erreur. SOAP 1.2 supporte des nombreuses raisons avec un support multi-langages.Role : Requis pour tous les nœuds SOAP, excepté pour l'ultime destinataire. Un URI décrivant la source de l'erreur.Detail : Requis si le corps de l'erreur SOAP ne peut pas être traité. Doit fournir des éléments sur le corps des éléments SOAP ayant échoué.Node : Requis pour tous les nœuds SOAP , excepté l'ultime destinataire. Un URI décrivant le nœud ayant entraîné l'erreur.

Page 15: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

15

Web Services – SOAPWeb Services – SOAP

Faultcode :4 groupes de code d’ erreurClient,Server,MustUnderstand,VersionMismatch

Exemple SOAP 1.1 <s:Envelope

xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns="">s:Client</faultcode><faultstring xml:lang="fr-FR" xmlns="">Une opération invalide s'est produite.</faultstring></s:Fault></s:Body></s:Envelope>

Page 16: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

16

Web Services – SOAPWeb Services – SOAP

Exemple SOAP 1.2Exemple SOAP 1.2

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"xmlns:a="http://www.w3.org/2005/08/addressing">xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><s:Header>

<a:Action s:mustUnderstand="1"><a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>http://www.w3.org/2005/08/addressing/soap/fault</a:Action><a:RelatesTo>urn:uuid:64c5619c-99c3-4a83-9bdc-<a:RelatesTo>urn:uuid:64c5619c-99c3-4a83-9bdc-

fcbb6f399f93</a:RelatesTo>fcbb6f399f93</a:RelatesTo></s:Header></s:Header><s:Body><s:Body>

<s:Fault><s:Fault><s:Code><s:Code><s:Value>s:Sender</s:Value><s:Value>s:Sender</s:Value></s:Code></s:Code><s:Reason><s:Reason>

<s:Text xml:lang="fr-FR">Une opération invalide s'est <s:Text xml:lang="fr-FR">Une opération invalide s'est produite.</s:Text>produite.</s:Text>

</s:Reason></s:Reason></s:Fault></s:Fault>

</s:Body></s:Body>

</s:Envelope></s:Envelope>

Page 17: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

17

Web Services – SOAPWeb Services – SOAP

Les données contenues dans un message SOAP étant Les données contenues dans un message SOAP étant typées il faut définir un moyen de les encoder.typées il faut définir un moyen de les encoder.

L’encodage c’est la représentation de valeurs sous forme L’encodage c’est la représentation de valeurs sous forme XML.XML.

Le décodage est le pendant de l’encodage soit la Le décodage est le pendant de l’encodage soit la construction de valeurs à partir d’XMLconstruction de valeurs à partir d’XML

Le fragment XML représentant des valeurs a une structure Le fragment XML représentant des valeurs a une structure qui dépend du type de ces valeursqui dépend du type de ces valeurs

Il faut donc définir ce typeIl faut donc définir ce type

Soit par un mécanisme définit par l’utilisateurSoit par un mécanisme définit par l’utilisateur

Soit en utilisant des Schéma XML (préconiséSoit en utilisant des Schéma XML (préconisé)

Page 18: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

18

Web Services – SOAPWeb Services – SOAP

DéfinitionDéfinition

Value (valeur d’une donnée)Simple value (string, integers,etc)Compound value (array, struct, …)

Type (d’une value)Simple TypeCompound Type

Page 19: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

19

Web Services – SOAPWeb Services – SOAP

Types simples

Types définis dans XML Schéma, partie 2

Entier, flottant, entiers négatifs, chaînes caractères, …

Énumérations

Types complexes

Tableaux

Partie d’un tableau

Tableau creux (sparse array)

Structures

À la C

Page 20: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

20

Web Services – SOAPWeb Services – SOAP

Types xml simplesTypes xml simples<element name=“age” type=“int”> <element name=“taille” type=“float”><age>23</age><taille>1.87</taille>

EnumerationEnumeration<element name=“couleur”><simpleType base=“xsd:string”>

<enumeration value=“Rouge”><enumeration value=“Bleu”>

</simpleType><couleur>Bleu</couleur>

Page 21: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

21

Web Services – SOAPWeb Services – SOAP

<element name=<element name=“Personne”>“Personne”>

<complexType><complexType>

<element name=<element name=“Nom” type=“xsd:string”>“Nom” type=“xsd:string”>

<element name=<element name=“Prenom” type=“xsd:string”>“Prenom” type=“xsd:string”>

<element name=<element name=“Age” type=“xsd:float”>“Age” type=“xsd:float”>

</complexType></complexType>

<Personne><Personne>

<Nom>Durand</Nom><Nom>Durand</Nom>

<Prenom>Michel</Prenom><Prenom>Michel</Prenom>

<Age>34.7</Age><Age>34.7</Age>

</Personne></Personne>

Page 22: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

22

Web Services – SOAPWeb Services – SOAP

TableauTableau<<element name=“TabPersonne”>element name=“TabPersonne”>

<complexType base=“SOAP-ENC:Array”><complexType base=“SOAP-ENC:Array”><element name=“Personne” type=“xyz:Personne” maxOccurs=“unbounded”><element name=“Personne” type=“xyz:Personne” maxOccurs=“unbounded”></complexType></complexType>

</element></element>

<xyz:TabPersonne SOAP-ENC:arrayType=“xyz:Personne[2]”><xyz:TabPersonne SOAP-ENC:arrayType=“xyz:Personne[2]”>

<Personne><Personne>

<Nom>Durand</Nom><Nom>Durand</Nom>

<Prenom>Michel</Prenom><Prenom>Michel</Prenom>

<Age>34.7</Age><Age>34.7</Age>

</Personne></Personne>

<Personne><Personne>

<Nom>Dupond</Nom><Nom>Dupond</Nom>

<Prenom>Serge</Prenom><Prenom>Serge</Prenom>

<Age>40</Age><Age>40</Age>

</Personne></Personne>

</xyz:TabPersonne></xyz:TabPersonne>

Page 23: 1 Les technologies XML Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -

23

Web Services – SOAPWeb Services – SOAP

Tableaux Multidimentionnels<SOAP-ENC:Array SOAP-ENC:arrayType= =“xsd:string[2,2]”>=“xsd:string[2,2]”>

<item>l1c1</item><item>l1c1</item>

<item>l1c2</item><item>l1c2</item>

<item>l2c1</item><item>l2c1</item>

<item>l2c2</item><item>l2c2</item>

< < SOAP-ENC:Array>

Tableaux Creux<SOAP-ENC:Array id="array-1" SOAP-ENC:arrayType="xsd:string[10,10]"><SOAP-ENC:Array id="array-1" SOAP-ENC:arrayType="xsd:string[10,10]">

<item SOAP-ENC:position="[2,2]">Third row, third col</item><item SOAP-ENC:position="[2,2]">Third row, third col</item>

<item SOAP-ENC:position="[7,2]">Eighth row, third col</item><item SOAP-ENC:position="[7,2]">Eighth row, third col</item>

</SOAP-ENC:Array></SOAP-ENC:Array>