La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Fondations des services Web Les technologies SOAP.

Présentations similaires


Présentation au sujet: "Fondations des services Web Les technologies SOAP."— Transcription de la présentation:

1 Fondations des services Web Les technologies SOAP

2 Plan de cours Généralités SOAP SOAP par lexemple : HelloWorld service Structure dun message SOAP En tête dun message SOAP (header) Corps dun message SOAP (body) SOAP et le transport HTTP Outil SOAP UI

3 Généralités SOAP SOAP est un protocole de communication entre application basé sur le langage XML Initialement SOAP désignait lacronyme de Simple Object Access Protocol Qui est derrière SOAP (Microsoft et IBM) Objectifs visés Assurer la communication entre applications dune même entreprise (intranet) Assurer les échanges inter-entreprises entre applications et services Web Spécification du W3C SOAP 1.1 : SOAP 1.2 : Pour comparaison, SOAP est similaire aux protocoles « RPC »

4 Évolution de SOAP Lancêtre : XML-RPC UserLand (avec Microsoft) propose : un modèle de données basique avec une traduction très simple en XML : type fondamentaux (entiers, réels, booléens, chaînes de caractères et dates) tableaux structs un modèle purement RPC un protocole basique : POST HTTP

5 Exemple de requête XML-RPC POST /RPC2 HTTP/1.0 2 User-Agent: mozilla 3 Host: localhost.localdomain 4 Content-Type: text/xml 5 Content-length: examples.getStateName request

6 Exemple de réponse XML-RPC HTTP/ OK 2 Connection: close 3 Content-Length: Content-Type: text/xml 5 Date: Fri, 17 Jul :55:08 GMT 6 Server: apache South Dakota answer

7 La spécification actuelle : SOAP 1.1 mai DevelopMentor, IBM, Lotus, Microsoft et UserLand Simple Object Access Protocol propose : lenveloppe SOAP (format général des messages) un modèle de données relativement évolué (avec une traduction vers XML) : types fondamentaux des schémas XML du W3 structs listes notions de pointeurs un modèle RPC basique un protocole basique : POST HTTP Évolution de SOAP

8 Exemple de requête SOAP 1.1 POST /StockQuote HTTP/1.1 2 Host: 3 Content-Type: text/xml; charset="utf-8" 4 Content-Length: nnnn 5 SOAPAction: "Some-URI" 6 7 DIS request

9 Exemple de requête SOAP 1.1 HTTP/ OK 2 Content-Type: text/xml; charset="utf-8" 3 Content-Length: nnnn 4 5 answer

10 La spécification en cours de développement : SOAP 1.2 CR décembre 2002 (a priori, cest la version finale) contrôlée par le W3C traduction de lacronyme SOAP abandonnée essentiellement un travail de modularisation et dabstraction : le format de lenveloppe reste presque le même le modèle de données est séparé de sa représentation en XML les messages peuvent être échangés avec dautres protocoles que le simple POST HTTP (mécanisme de binding) Évolution de SOAP

11 Maturité XML-RPC est une technologie parfaitement mure, avec de très nombreuses implémentations (en particulier en terme de langages cibles) SOAP 1.1 est relativement mur : bon support dans les serveurs dapplications implémentation open source complète : AXIS du projet apache (http://ws.apache.org/axis/) SOAP 1.2 : le W3C considère que la spécification est terminée les implémentations sont en cours de réalisation certaines implémentations sont relativement complètes

12 Doit-on savoir écrire du SOAP? NON : les API le font pour nous Les APIs fournissent une abstraction des messages SOAP aspect bas-niveau : on peut envoyer des paquets TCP/IP sans savoir comment ils sont structurés cest le rôle des implémenteurs OUI : on comprend mieux la sémantique grâce à la syntaxe il faut savoir lire les messages pour débugger une application on comprend souvent mieux un service web avec un exemple dinteraction (traduction : WSDL est assez complexe) Utile pour réaliser des testes via SOAP UI Intercepter les messages bas niveau SOAP (via les handlers)

13 Comparaison

14 Concepts dun message SOAP Les messages SOAP sont utilisés pour envoyer (requête) et recevoir (réponse) des informations dun récepteur. message SOAP : transmission dinformations dun émetteur vers un récepteur (unidirectionnel) Un message SOAP peut être transmis à plusieurs récepteurs intermédiaires avant dêtre reçu par le récepteur final (~ chaîne de responsabilité). notion de routage : un message peut passer dun émetteur à son récepteur final en passant par des récepteurs intermédiaires qui peuvent modifier le message (même idée que pour SMTP)

15 Modèle de messages symétrie totale : si on utilise SOAP pour implémenter un mécanisme question/réponse, les messages ont le même format global Un message SOAP est véhiculé vers le récepteur en utilisant un protocole de transport (HTTP, SMTP, …). notion derreur : le format prévoit des messages spéciaux correspondant à la description dune erreur Services Le format SOAP peut contenir des messages spécifiques correspondant à des erreurs identifiées par le récepteur.

16 SOAP par lexemple : Requête vers le service HelloWorld Mickael BARON Exemple : Appeler les opérations du service HelloWorld Message SOAP pour appeler lopération makeHelloWorld contenant un paramètre value Message SOAP pour appeler lopération simpleHelloWorld ne contenant pas de paramètre

17 SOAP par lexemple : Réponse du service HelloWorld soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> Hello World to Mickael BARON Exemple (suite) : Message retour de lappel des opérations du service HelloWorld soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> Hello World to everybody Les réponses sont sensiblement identiques

18 Structure dun message SOAP Un message SOAP est un document XML constitué dune enveloppe composée de deux parties: Un en-tête (header) qui peut être facultatif Un corps (body) En-tête SOAP (header facultatif) Corps du message SOAP (body) Enveloppe SOAP

19 Lenveloppe SOAP Lenveloppe SOAP contient : un en-tête (optionnel) : mécanisme générique dextension de SOAP assez différent des en-têtes du mail ne correspond pas en général à ladresse du destinataire un corps (le message proprement dit, obligatoire) : contenu structuré mais relativement arbitraire : traduction du modèle de données en XML basé sur les schémas du W3C sauf pour un message derreur

20 Lenveloppe SOAP : Représentation XML espace de noms XML : (préfixe classique env) élément racine : env:Envelope en-tête : env:Header corps : env:Body Rappel : XML est case-sensitive (envelope6=Envelope) forme générale : 2 template.xml

21 Lenveloppe est la racine dun message SOAP identifiée par la balise La spécification impose que la balise et les sous balises soient explicitement associées à un namespace La spécification SOAP définit deux namespaces SOAP-ENV ou soapenv : SOAP-ENC : La requête et la réponse ont la même structure SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"> Message SOAP dune réponse Message SOAP dune requête Lenveloppe SOAP : Représentation XML

22 Les espaces de noms SOAP repose entièrement sur les espaces de noms XML : les éléments spécifiques à SOAP sont dans des NS spécifiques : : commandes SOAP : éléments définis pour la représentation des données les fils directs de env:Header doivent appartenir à des NS précisés dans le message les attributs de env:Envelope doivent appartenir à des NS les fils directs de env:Body peuvent appartenir à des NS précisés la norme SOAP 1.2 utilise des NS différents, mais conserve le même principe

23 En-tête SOAP Len-tête dun message SOAP est utilisé pour transmettre des informations supplémentaires sur le même message Len-tête est défini par la balise Lélément peut être facultatif Doit être placé avant le corps Différents usages de len-tête ? Informations authentifiant lémetteur Contexte dune transaction Pour certains protocole de transport (FTP par exemple), len-tête peut être utilisé pour identifier lémetteur du message Un message SOAP peut transiter par plusieurs intermédiaires avant le traitement par le récepteur final Pattern « Chaîne de responsabilité » Zone lecture / écrite par les intermédiaires

24 En-tête SOAP Len-tête est constitué de plusieurs entrées dont le format nest pas spécifié par la norme. le but de len-tête est de permettre la mise en place dextensions aux mécanismes de base définis par SOAP : WS-Security ajoute des entrées de signature WS-RP (Routing Protocol) ajout des entrées pour le routage des messages SOAP etc. chaque entrée doit avoir un NS associé la norme SOAP se contente de définir des attributs qui peuvent préciser le traitement des entrées de len-tête (dans le NS env)

25 En-tête SOAP En-tête dans une série de transferts successifs de message SOAP SOAP-ENV:Envelope...> ... SOAP-ENV:Envelope...> ... Valeurs conventionnelles pour la transmission par chaîne Le contenu de cet élément sera traité par le récepteur intermédiaire Récepteur Intermédiaire n°2 Récepteur Intermédiaire n°1 Récepteur final du message SOAP Emetteur du message SOAP

26 Exemple WS-RP Norme : /ws-routing.asp soap://notification.com/some/endpoint 7 uuid: b-4351-b623-5dsf35sgs5d

27 Attributs de len-tête éventuellement portés par les fils directs de env:Header env:mustUnderstand : la valeur 1 indique que le récepteur du message doit comprendre lentrée concernée ou terminer son traitement du message avec un statut derreur les valeurs 1 et 0 sont remplacées respectivement par true et false dans SOAP 1.2 env:actor : permet de préciser la catégorie des récepteurs SOAP qui doivent étudier lentrée portant lattribut dans len-tête si lentrée est traitée, elle ne doit pas être propagée (en cas de routage) mécanisme remplacé en 1.2 par deux attributs : env:role pour les catégories env:relay pour la propagation

28 Exemple header WSSecurity Message env:Header env:Body Serveur standard Message env:Body Serveur sécurisé comprenant WSS destinataire du header WSS pas de relay le header est supprimé

29 Les messages derreur Le corps dun message derreur a un format particulier : la racine est env:Fault lerreur est décrite grâce à quatre sous éléments (dans le NS env) : faultcode : code derreur, présence obligatoire et contenu défini dans un NS faultstring : traduction en langage naturel du code derreur (présence obligatoire) faultactor : responsable de lerreur (utilisé en cas de relais) detail : pour donner des précisions, sous forme de sous-éléments le format a évolué de façon imporante en SOAP 1.2, mais les principes sont les mêmes

30 Exemple 2 env:Server 10 xx is not a valid integer value erreur.xml

31 Corps SOAP Le corps dun message SOAP est constitué par un élément Lélément peut contenir soit Une erreur en réponse à une requête (élément ) Des informations adressées au destinataire du message SOAP respectant un encodage déterminé Lencodage des informations est précisé par les bindings du document WSDL Attribut style (Document et RPC) Attribut use (encoded et litteral) Pour faire simple nous utiliserons les services Web dans le cadre de lappel à une procédure distante

32 Corps SOAP Lobjectif visé par SOAP a été de fournir un mécanisme standardisé pour lappel de procédures distant (RPC) De ce fait les informations adressées au destinataire de messages SOAP doivent respectées un certain nombre de convention Appel dune opération représentée par une struct Le nom de la structure est celui de lopération à appeler Chaque paramètre de lopération est défini comme un sous élément de la structure Si un paramètre est un type complexe (Person par exemple) une nouvelle structure est définie contenant à son tour des sous éléments … Le résultat est également représenté par une struct Le nom de la structure est celui de lopération suivi de Response Les paramètres sont également structurés

33 Corps SOAP Exemple : corps de messages SOAP pour appeler des opérations du service Web Notebook Poitiers BARON Mickael soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> BARON Mickael Poitiers Message SOAP pour appeler lopération addPersonWithComplexType Paramètre de type complexe défini dans une structure (newPerson) Message SOAP pour appeler lopération addPersonWithSimpleType Trois paramètres

34 Corps SOAP Exemple : corps de messages SOAP pour le résultat des opérations du service Web Notebook soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> true true Messages SOAP pour la réponse puisque les noms des opérations sont suivis de Response Les paramètres de sorties suivent la même convention que les paramètres dentrés

35 SOAP transporté par HTTP SOAP utilise un protocole de transport pour véhiculer les messages SOAP de lémetteur au récepteur HTTP, SMTP, FTP, POP3 et NNTP Le modèle requête/réponse de SOAP convient parfaitement au modèle requête/réponse HTTP En-tête HTTP En-tête SOAP (header facultatif ) Corps du message SOAP (body) Corps HTTP Enveloppe SOAP Requête / Réponse HTTP Contenu étudié précédemment

36 SOAP transporté par HTTP Requête SOAP HTTP Méthode de type POST Nécessite un attribut SOAPAction Réponse SOAP HTTP Exploite les codes retours HTTP Si code de type 2xx, message SOAP reçu Si code 500, message en erreur, le corps SOAP doit contenir fault POST HTTP/1.1 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 459 Poitiers BARON Mickael HTTP/ OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Sun, 13 Dec :00:33 GMT true

37 SOAP UI : outil graphique de tests de Service Web SOAP UI est un outil pour tester des Services Web Disponible pour en standalone ou intégré dans les environnements de développement (Eclipse, Intellij, Netbeans, Maven, …) Peut sutiliser pour nimporte quelle plateforme de développement Fonctionnalités de SOAP UI Supporte les Services Web étendus (WSDL + SOAP + UDDI) ou REST Inspecter des Services Web Invoquer des Services Web Développer des Services Web Simuler des Services Web via des bouchons (mocks) Effectuer des tests qualités (temps de réponse, …)

38 SOAP UI : outil graphique de tests de Service Web Les logs de SOAPUI Les projets regroupant les appels aux Services Web Les messages SOAP (requête et réponse)

39 Le modèle de données modèle abstrait : graphe orienté étiqueté (formalisation introduite dans 1.2) basé sur des types fondamentaux (les feuilles du graphe) et des constructeurs de type composé, struct et listes (les noeuds internes du graphe), associés à ces accesseurs (les arêtes du graphe) types fondamentaux : ceux des schémas du W3C (http://www.w3.org/TR/xmlschema-2/) entiers, réels, chaînes de caractères, binaire codé en base64, etc. dates, durée, URI, etc. types composés : énumération (une valeur parmi une liste) struct (compound) : accès nommé liste (array) : accès numéroté

40 Exemple dune struct shrdlu winograd maclisp teletype 010true""false "" latin1 maxResults filter restrict q start key oe ie lr

41 Traduction en XML SOAP définit une représentation en XML de son modèle de données (un encoding) : pour lutiliser, il faut définir lattribut env:encodingStyle et lui donner la valeur (noté enc) le modèle est facultatif : on peut utiliser une autre représentation, mais il faut que lémetteur et le récepteur la comprennent la représentation est celle des schémas du W3C, avec des extensions pour la notion de type composé elle utilise les notions dID XML et de uriReference pour implémenter des références internes, ce qui permet de réduire les volumes de données

42 Exemple de traduction shrdlu winograd maclisp teletype true false latin1 16 latin1 17 googleSearch-part.xml

43 Traduction en XML Principes de base : toute valeur est représentée comme le contenu dun élément quand la valeur correspond à un type de base, celui-ci est précisé directement ou indirectement par lélément : directement par un attribut type du NS des schémas (http://www.w3.org/1999/XMLSchema-instance, noté xsi) dont la valeur correspond à un type fondamental des schémas (dans le NS noté xsd) directement par le nom de lélément (choisit dans le NS enc) indirectement par le type du tableau (le cas échéant) exemple : maxResults de type xsd:int dans le transparent précédent

44 Traduction des structs Une struct est une valeur composée : un noeud du graphe sans étiquette dont partent des arcs étiquetés vers dautres valeurs les étiquettes des arcs correspondent aux champs de la structure traduction XML : un élément (sans type associé) dont le contenu est constitué déléments nommés selon les champs de la structure correspond à la représentation classique des données structurées en XML dans SOAP 1.1, on peut avoir un type composé plus général que les structs dans lequel plusieurs champs peuvent porter le même nom : cette possibilité a été supprimée dans SOAP 1.2

45 Exemple Fabrice Rossi nom prénom 2 8 Rossi 9 Fabrice 10 Services personne-part.xml

46 Traduction des listes Les tableaux de SOAP (array) sont en fait des listes (le type na pas besoin dêtre uniforme) : correspond à un noeud du graphe sans étiquette dont partent des arcs numérotés vers dautres valeurs traduction XML : un élément de type dérivé de enc:Array (ou directement lélément enc:Array) portant un attribut enc:arrayType qui précise le type des éléments et la taille du tableau (sous la forme [n]) le type xsd:ur-type peut servir de joker pour avoir des types différents pour chaque élément des sous-éléments dans lordre du tableau, avec si besoin le type pour chaque élément

47 Traduction des listes on peut représenter des tableaux à plusieurs dimensions (modèle ligne par ligne) on peut représenter des tableaux creux ou partiellement transmis la traduction des tableaux a été modifiée dans SOAP 1.2 (surtout au niveau syntaxique) : tableaux creux et partiels supprimés les attributs itemType et arraySize remplacent lattribut arrayType

48 Exemple Ordre 6 xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" 7 enc:arrayType="xsd:int[4]"> tableau-part1.xml

49 Exemple Bla bla bla Ordre 6 xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" 7 enc:arrayType="xsd:ur-type[4]"> Bla bla bla 12 Services tableau-part2.xml Bla bla bla Ordre

50 Références croisées Afin de limiter le volume des messages, SOAP utilise le mécanisme de références croisées dXML : un élément peut être identifié par un attribut de type ID et de nom id un élément peut être vide mais doit alors posséder un attribut href de type xsi:uri-reference linterprétation dun élément vide est son simple remplacement par lélément référencé par son href en SOAP 1.2, href est remplacé par enc:ref de type IDREF

51 Exemple 2 7 xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" 8 Services Web 9 10 Introduction Rossi 13 Fabrice SOAP reference-part.xml

52 Exemple Services Web Introduction Rossi Fabrice SOAP sujet titre auteur nom prénom

53 Évolution de SOAP Lancêtre : XML-RPC UserLand (avec Microsoft) propose : un modèle de données basique avec une traduction très simple en XML : type fondamentaux (entiers, réels, booléens, chaînes de caractères et dates) tableaux structs un modèle purement RPC un protocole basique : POST HTTP

54 Exemple de requête XML-RPC POST /RPC2 HTTP/1.0 2 User-Agent: mozilla 3 Host: localhost.localdomain 4 Content-Type: text/xml 5 Content-length: examples.getStateName request

55 Exemple de réponse XML-RPC HTTP/ OK 2 Connection: close 3 Content-Length: Content-Type: text/xml 5 Date: Fri, 17 Jul :55:08 GMT 6 Server: apache South Dakota answer

56 La spécification actuelle : SOAP 1.1 mai DevelopMentor, IBM, Lotus, Microsoft et UserLand Simple Object Access Protocol propose : lenveloppe SOAP (format général des messages) un modèle de données relativement évolué (avec une traduction vers XML) : types fondamentaux des schémas XML du W3 structs listes notions de pointeurs un modèle RPC basique un protocole basique : POST HTTP Évolution de SOAP

57 Exemple de requête SOAP 1.1 POST /StockQuote HTTP/1.1 2 Host: 3 Content-Type: text/xml; charset="utf-8" 4 Content-Length: nnnn 5 SOAPAction: "Some-URI" 6 7 DIS request

58 Exemple de requête SOAP 1.1 HTTP/ OK 2 Content-Type: text/xml; charset="utf-8" 3 Content-Length: nnnn 4 5 answer

59 La spécification : SOAP 1.2 décembre 2002 (la version finale) contrôlée par le W3C traduction de lacronyme SOAP abandonnée essentiellement un travail de modularisation et dabstraction : le format de lenveloppe reste presque le même le modèle de données est séparé de sa représentation en XML les messages peuvent être échangés avec dautres protocoles que le simple POST HTTP Évolution de SOAP

60 Doit-on savoir écrire du SOAP? NON : les API le font pour nous Les APIs fournissent une abstraction des messages SOAP aspect bas-niveau : on peut envoyer des paquets TCP/IP sans savoir comment ils sont structurés OUI : on comprend mieux la sémantique grâce à la syntaxe il faut savoir lire les messages pour débugger une application on comprend souvent mieux un service web avec un exemple dinteraction (traduction : WSDL est assez complexe) Utile pour réaliser des testes via SOAP UI. Intercepter les messages bas niveau SOAP.

61 Comparaison RMIDCOMCORBASOAP Définir parJavaMicrosoftOMGW3C Plate-formeMultiwin32Multi Langage de développement JavaC++, VBMulti Langage de définition JavaODLIDLWSDL TransportTCP HTTPIP/IPXGIOP, IIOP HTTP, SMTP SecuritéSSL, JAAS ?SSL

62 Concepts dun message SOAP Les messages SOAP sont utilisés pour envoyer (requête) et recevoir (réponse) des informations dun récepteur. message SOAP : transmission dinformations dun émetteur vers un récepteur (unidirectionnel) Un message SOAP peut être transmis à plusieurs récepteurs intermédiaires avant dêtre reçu par le récepteur final (~ chaîne de responsabilité). notion de routage : un message peut passer dun émetteur à son récepteur final en passant par des récepteurs intermédiaires qui peuvent modifier le message (même idée que pour SMTP)

63 Modèle de messages symétrie totale : si on utilise SOAP pour implémenter un mécanisme question/réponse, les messages ont le même format global Un message SOAP est véhiculé vers le récepteur en utilisant un protocole de transport (HTTP, SMTP, …). notion derreur : le format prévoit des messages spéciaux correspondant à la description dune erreur Services Le format SOAP peut contenir des messages spécifiques correspondant à des erreurs identifiées par le récepteur.

64 SOAP par lexemple : Requête vers le service HelloWorld Mickael BARON Exemple : Appeler les opérations du service HelloWorld Message SOAP pour appeler lopération makeHelloWorld contenant un paramètre value Message SOAP pour appeler lopération simpleHelloWorld ne contenant pas de paramètre

65 SOAP par lexemple : Réponse du service HelloWorld soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> Hello World to Mickael BARON Exemple (suite) : Message retour de lappel des opérations du service HelloWorld soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> Hello World to everybody Les réponses sont sensiblement identiques

66 Structure dun message SOAP Un message SOAP est un document XML constitué dune enveloppe composée de deux parties: Un en-tête (header) qui peut être facultatif Un corps (body) En-tête SOAP (header facultatif) Corps du message SOAP (body) Enveloppe SOAP

67 Lenveloppe SOAP Lenveloppe SOAP contient : un en-tête (optionnel) : mécanisme générique dextension de SOAP assez différent des en-têtes du mail ne correspond pas en général à ladresse du destinataire un corps (le message proprement dit, obligatoire) : contenu structuré mais relativement arbitraire : traduction du modèle de données en XML basé sur les schémas du W3C sauf pour un message derreur

68 Lenveloppe SOAP : Représentation XML espace de noms XML : (préfixe classique env) élément racine : env:Envelope en-tête : env:Header corps : env:Body Rappel : XML est case-sensitive forme générale : 2 template.xml

69 Lenveloppe est la racine dun message SOAP identifiée par la balise La spécification impose que la balise et les sous balises soient explicitement associées à un namespace La spécification SOAP définit deux namespaces SOAP-ENV ou soapenv : SOAP-ENC : La requête et la réponse ont la même structure SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"> Message SOAP dune réponse Message SOAP dune requête Lenveloppe SOAP : Représentation XML

70 Les espaces de noms SOAP repose entièrement sur les espaces de noms XML : les éléments spécifiques à SOAP sont dans des NS spécifiques : : commandes SOAP : éléments définis pour la représentation des données les fils directs de env:Header doivent appartenir à des NS précisés dans le message les attributs de env:Envelope doivent appartenir à des NS les fils directs de env:Body peuvent appartenir à des NS précisés la norme SOAP 1.2 utilise des NS différents, mais conserve le même principe

71 En-tête SOAP Len-tête dun message SOAP est utilisé pour transmettre des informations supplémentaires sur le même message Len-tête est défini par la balise Lélément peut être facultatif Doit être placé avant le corps Différents usages de len-tête ? Informations authentifiant lémetteur Contexte dune transaction Pour certains protocole de transport (FTP par exemple), len-tête peut être utilisé pour identifier lémetteur du message Un message SOAP peut transiter par plusieurs intermédiaires avant le traitement par le récepteur final Pattern « Chaîne de responsabilité » Zone lecture / écrite par les intermédiaires

72 En-tête SOAP Len-tête est constitué de plusieurs entrées dont le format nest pas spécifié par la norme. le but de len-tête est de permettre la mise en place dextensions aux mécanismes de base définis par SOAP : WS-Security ajoute des entrées de signature WS-RP (Routing Protocol) ajout des entrées pour le routage des messages SOAP etc. chaque entrée doit avoir un NS associé la norme SOAP se contente de définir des attributs qui peuvent préciser le traitement des entrées de len-tête (dans le NS env)

73 En-tête SOAP En-tête dans une série de transferts successifs de message SOAP SOAP-ENV:Envelope...> ... SOAP-ENV:Envelope...> ... Valeurs conventionnelles pour la transmission par chaîne Le contenu de cet élément sera traité par le récepteur intermédiaire Récepteur Intermédiaire n°2 Récepteur Intermédiaire n°1 Récepteur final du message SOAP Emetteur du message SOAP

74 Exemple WS-RP Norme : /ws-routing.asp soap://notification.com/some/endpoint 7 uuid: b-4351-b623-5dsf35sgs5d

75 Attributs de len-tête éventuellement portés par les fils directs de env:Header env:mustUnderstand : la valeur 1 indique que le récepteur du message doit comprendre lentrée concernée ou terminer son traitement du message avec un statut derreur les valeurs 1 et 0 sont remplacées respectivement par true et false dans SOAP 1.2 env:actor : permet de préciser la catégorie des récepteurs SOAP qui doivent étudier lentrée portant lattribut dans len-tête si lentrée est traitée, elle ne doit pas être propagée (en cas de routage) mécanisme remplacé en 1.2 par deux attributs : env:role pour les catégories env:relay pour la propagation

76 Exemple header WSSecurity Message env:Header env:Body Serveur standard Message env:Body Serveur sécurisé comprenant WSS destinataire du header WSS pas de relay le header est supprimé

77 Les messages derreur Le corps dun message derreur a un format particulier : la racine est env:Fault lerreur est décrite grâce à quatre sous éléments (dans le NS env) : faultcode : code derreur, présence obligatoire et contenu défini dans un NS faultstring : traduction en langage naturel du code derreur (présence obligatoire) faultactor : responsable de lerreur (utilisé en cas de relais) detail : pour donner des précisions, sous forme de sous-éléments le format a évolué de façon imporante en SOAP 1.2, mais les principes sont les mêmes

78 Exemple 2 env:Server 10 xx is not a valid integer value erreur.xml

79 Corps SOAP Le corps dun message SOAP est constitué par un élément Lélément peut contenir soit Une erreur en réponse à une requête (élément ) Des informations adressées au destinataire du message SOAP respectant un encodage déterminé Lencodage des informations est précisé par les bindings du document WSDL Attribut style (Document et RPC) Attribut use (encoded et litteral) Pour faire simple nous utiliserons les services Web dans le cadre de lappel à une procédure distante

80 Corps SOAP Lobjectif visé par SOAP a été de fournir un mécanisme standardisé pour lappel de procédures distant (RPC) De ce fait les informations adressées au destinataire de messages SOAP doivent respectées un certain nombre de convention Appel dune opération représentée par une struct Le nom de la structure est celui de lopération à appeler Chaque paramètre de lopération est défini comme un sous élément de la structure Si un paramètre est un type complexe (Person par exemple) une nouvelle structure est définie contenant à son tour des sous éléments … Le résultat est également représenté par une struct Le nom de la structure est celui de lopération suivi de Response Les paramètres sont également structurés

81 Corps SOAP Exemple : corps de messages SOAP pour appeler des opérations du service Web Notebook Poitiers BARON Mickael soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://notebookwebservice.lisi.ensma.fr/"> BARON Mickael Poitiers Message SOAP pour appeler lopération addPersonWithComplexType Paramètre de type complexe défini dans une structure (newPerson) Message SOAP pour appeler lopération addPersonWithSimpleType Trois paramètres

82 Corps SOAP Exemple : corps de messages SOAP pour le résultat des opérations du service Web Notebook soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> true true Messages SOAP pour la réponse puisque les noms des opérations sont suivis de Response Les paramètres de sorties suivent la même convention que les paramètres dentrés

83 SOAP transporté par HTTP SOAP utilise un protocole de transport pour véhiculer les messages SOAP de lémetteur au récepteur HTTP, SMTP, FTP, POP3 et NNTP Le modèle requête/réponse de SOAP convient parfaitement au modèle requête/réponse HTTP En-tête HTTP En-tête SOAP (header facultatif ) Corps du message SOAP (body) Corps HTTP Enveloppe SOAP Requête / Réponse HTTP Contenu étudié précédemment

84 SOAP transporté par HTTP Requête SOAP HTTP Méthode de type POST Nécessite un attribut SOAPAction Réponse SOAP HTTP Exploite les codes retours HTTP Si code de type 2xx, message SOAP reçu Si code 500, message en erreur, le corps SOAP doit contenir fault POST HTTP/1.1 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 459 Poitiers BARON Mickael HTTP/ OK Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Sun, 13 Dec :00:33 GMT true


Télécharger ppt "Fondations des services Web Les technologies SOAP."

Présentations similaires


Annonces Google