1 / 23

Les technologies XML

Les technologies XML. Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 -. 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 distants grâce à l’échange de message XML.

feng
Download Presentation

Les technologies XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 distants grâce à l’échange de message XML. • SOAP n'est plus un acronyme depuis la version 1.2 qui a été réécrite en termes d'infosets XML, et non plus sous forme de sérialisations de document XML. La notion d'objet (spécifiée dans Simple OBJECT Access Protocol) devient donc obsolète.

  3. Web 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.

  4. Web Services - SOAP • Basé sur la technologie universelle XML par opposition aux spécifiques DCOM - DCE/NDR, CORBA - IIOP/CDR, JAVA - RMI/JRMP, RDA – XDR . • Indépendant du langage, modèle objet (jusqu’à la version 1.1, système et plate-forme d’hébergement du service Web. • Prend en charge les protocoles et formats suivants : HTTP, SMTP et MIME (supporte «Multipart MIME»). • Résolution des problèmes de sécurité : • Les firewalls supportent des ports spécifiques (HTTP, FTP) • La plupart des middlewares assignent des ports dynamiques …

  5. Web Services - SOAP • Septembre 1999 : SOAP 0.9 • Spécifications par MicroSoft et DevelopMentor • Décembre 1999 : SOAP 1.0 • Soumission des spécifications à l’ IETF • Association de UserLand • Mai 2000 : SOAP 1.1 • Nombreuses associations : IBM, HP, Lotus, Compaq, Intel … • XIDL : rapprochement de Corba • Septembre 2000 • Groupe de travail W3C pour la standardisation de SOAP • Corba/Soap Interworking RFP => SCOAP • Avril 2007 : SOAP 1.2 • SOAP abandonne le modèle objet pour utiliser XML Infosets

  6. Web Services – SOAP - Exemple • Requête HTTP invoquant une méthode GetOrders : • POST /Orders HTTP/1.1 Host: xxx.xxx.xxx.xxx Content-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>

  7. Web Services – SOAP - Exemple • 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>

  8. Web Services – SOAP • Eléments d’un message SOAP : • Envelope • Élément pouvant contenir des déclarations d'espaces de noms ou des sous-éléments • Header (optionnel) • Permet des extensions telles que authentification, session… • 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

  9. Web Services – SOAP • NameSpaces 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.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

  10. Web 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.

  11. Web Services – SOAP • Exemple <SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="0"> 5 </t:Transaction> </SOAP-ENV:Header> • L’attribut mustUnderstand • n Rien ou =0 : l’élément est optionnel pour l’application réceptrice • n =1 : l’élément doit être compris de l’application réceptrice. Sinon le traitement du message par le récepteur doit échouer.

  12. Web 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.

  13. Web 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.

  14. Web 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.

  15. Web Services – SOAP • Faultcode :4 groupes de code d’ erreur • Client, • 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>

  16. Web Services – SOAP • Exemple SOAP 1.2 <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header> <a:Action s:mustUnderstand="1"> http://www.w3.org/2005/08/addressing/soap/fault</a:Action> <a:RelatesTo>urn:uuid:64c5619c-99c3-4a83-9bdc- fcbb6f399f93</a:RelatesTo></s:Header><s:Body> <s:Fault> <s:Code> <s:Value>s:Sender</s:Value> </s:Code> <s:Reason> <s:Text xml:lang="fr-FR">Une opération invalide s'est produite.</s:Text> </s:Reason> </s:Fault></s:Body> </s:Envelope>

  17. Web Services – SOAP • Les données contenues dans un message SOAP étant typées il faut définir un moyen de les encoder. • L’encodage c’est la représentation de valeurs sous forme XML. • Le décodage est le pendant de l’encodage soit la construction de valeurs à partir d’XML • Le fragment XML représentant des valeurs a une structure qui dépend du type de ces valeurs • Il faut donc définir ce type • Soit par un mécanisme définit par l’utilisateur • Soit en utilisant des Schéma XML (préconisé)

  18. Web Services – SOAP • Définition • Value (valeur d’une donnée) • Simple value (string, integers,etc) • Compound value (array, struct, …) • Type (d’une value) • Simple Type • Compound Type

  19. Web 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

  20. Web Services – SOAP • Types xml simples <element name=“age” type=“int”> <element name=“taille” type=“float”> <age>23</age> <taille>1.87</taille> • Enumeration <element name=“couleur”> <simpleType base=“xsd:string”> <enumeration value=“Rouge”> <enumeration value=“Bleu”> </simpleType> <couleur>Bleu</couleur>

  21. Web Services – SOAP <element name=“Personne”> <complexType> <element name=“Nom” type=“xsd:string”> <element name=“Prenom” type=“xsd:string”> <element name=“Age” type=“xsd:float”> </complexType> <Personne> <Nom>Durand</Nom> <Prenom>Michel</Prenom> <Age>34.7</Age> </Personne>

  22. Web Services – SOAP • Tableau <element name=“TabPersonne”> <complexType base=“SOAP-ENC:Array”> <element name=“Personne” type=“xyz:Personne” maxOccurs=“unbounded”> </complexType> </element> <xyz:TabPersonne SOAP-ENC:arrayType=“xyz:Personne[2]”> <Personne> <Nom>Durand</Nom> <Prenom>Michel</Prenom> <Age>34.7</Age> </Personne> <Personne> <Nom>Dupond</Nom> <Prenom>Serge</Prenom> <Age>40</Age> </Personne> </xyz:TabPersonne>

  23. Web Services – SOAP • Tableaux Multidimentionnels <SOAP-ENC:Array SOAP-ENC:arrayType= =“xsd:string[2,2]”> <item>l1c1</item> <item>l1c2</item> <item>l2c1</item> <item>l2c2</item> < SOAP-ENC:Array> • Tableaux Creux <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="[7,2]">Eighth row, third col</item> </SOAP-ENC:Array>

More Related