Cours 05 PDF - Protocole SOAP - Codage de données

Document Details

IntimateSerpentine4544

Uploaded by IntimateSerpentine4544

Université d'Oran 1 Ahmed Ben Bella

H. Meziane

Tags

SOAP web services XML programming languages

Summary

Ce document traite du protocole SOAP, se concentrant sur l'encodage des données dans les services web. Il explique les différents styles de codage et donne des exemples.

Full Transcript

Masters 1 Resin, SITW,RSD,ADSI,IIEP Laboratoire Le protocole SOAP Partie II : Echange avec un service ‐ Codage des données Les Services Web H. Meziane 1 SOAP 101 La spécification SOAP définit deux p...

Masters 1 Resin, SITW,RSD,ADSI,IIEP Laboratoire Le protocole SOAP Partie II : Echange avec un service ‐ Codage des données Les Services Web H. Meziane 1 SOAP 101 La spécification SOAP définit deux parties principales : Un framework de messagerie Un standard d’encodage 15/10/2022 Les Services Web H. Meziane 2 Règles Encodage SOAP (1/3)  Les services Web sont mis en œuvre par des programmes écrits à l’aide de différents langages de programmation. Ces langages manipulent des données atomiques comme les entiers, les flottants, les dates, etc., mais aussi des structures de données plus complexes, formées par composition récursive de données atomiques.  Les données manipulées par les langages de programmation (Java, C# ou C++,….) sont toujours typées, où chaque variable doit déclarer son type dans le texte du programme.  SOAP 1.1 a mit en œuvre un mécanisme d’échange indépendant des choix d’implémentation des applications, et notamment des langages de programmation.  Mécanisme d’échange repose sur des messages au format XML dotés d’une structure prédéfinie (enveloppe, en‐tête, corps, etc.). 15/10/2022 Les Services Web H. Meziane 3 Règles Encodage SOAP (2/3) Pour faciliter l’intégration de ce mécanisme d’échange avec les applications, il est nécessaire de : 1‐ Définir des représentations et un codage dans les messages SOAP, des données manipulées par ces langages. 2‐ Mettre en œuvre les règles associées d’encodage et de décodage. SOAP 1.1 appelle ces représentations et les règles d’encodage/décodage associées, des styles de codage, encoding style. 15/10/2022 Les Services Web H. Meziane 4 Règles Encodage SOAP (3/3)  À partir de la disponibilité d’un style de codage, des outils d’aide au développement de services Web peuvent générer automatiquement la chaîne des traitements, depuis la production du message SOAP de la part de l’émetteur, jusqu’à la consommation du message de la part du récepteur. L’objectif de encoding style est de permettre au développeur applicatif de continuer à travailler dans la représentation de données propre au langage de programmation qu’il utilise, sans se poser de questions au sujet du format et du codage des données dans le message SOAP. 15/10/2022 Les Services Web H. Meziane 5 Le style de codage dans les messages SOAP  Trois stratégies sont possibles pour la représentation des données typées dans les messages SOAP : Représentation littérale Représentation codée explicite Représentation codée Implicite 15/10/2022 Les Services Web H. Meziane 6 Représentation littérale (1/2)  Avec la représentation littérale, il n’y a pas de codage des données : le contenu XML du message SOAP (corps, entrée de l’en‐tête) est la donnée véhiculée par le message.  Le producteur du message a la responsabilité de constituer un fragment XML bien formé et éventuellement valide et de le placer à la bonne position dans le message (comme descendant direct du corps ou comme une entrée de l’en‐tête). 15/10/2022 Les Services Web H. Meziane 7 Représentation littérale (2/2)  Le consommateur doit analyser le contenu du message en utilisant des outils standards disponibles dans plusieurs langages de programmation, comme les analyseurs SAX et DOM. Il peut, par ailleurs, valider le message par rapport a un Schéma XML.  Deux applications qui s’échangent des messages SOAP 1.1 en représentation littérale manipulent directement des fragments de documents XML. 15/10/2022 Les Services Web H. Meziane 8 Représentation codée Explicite  En représentation codée explicite, il existe un accord entre les applications qui participent à l’échange. Cet accord définit un style de codage, à savoir une correspondance entre, d’un côté, les arbres d’éléments et les données‐caractères XML du message SOAP 1.1, et de l’autre, les types atomiques et structurés manipulés par les langages des applications participantes.  La référence au style de codage est explicite dans le message.  L’outil permettant d’indiquer le style de codage dans le message SOAP 1.1 est l’attribut SOAP‐ENV:encodingStyle, dont la valeur est une URI.  La déclaration SOAP‐ENV:encodingStyle="URI" indique que le style de codage identifié par URI est en vigueur dans la partie du message couverte par la portée de la déclaration. 15/10/2022 Les Services Web H. Meziane 9 Déclaration SOAP‐ENV:encodingStyle La spécification SOAP 1.1 précise que le style de codage SOAP 1.1 pour le codage explicite est identifié par l’URI: http://schemas.xmlsoap.org/soap/encoding/, et que les messages qui adoptent ce style de codage devraient le revendiquer explicitement par la déclaration : SOAP‐ENV:encodingStyle = http://schemas.xmlsoap.org/soap/encoding/ 15/10/2022 Les Services Web H. Meziane 10 Style d’encodage : déclaration dans le message SOAP  l’attribut encodingStyle est indiqué soit dans SOAP‐ENV: Envelope avec l’espace de nom indiquant la version de SOAP utilisée ou dans SOAP‐ENV:Body. 15/10/2022 Les Services Web H. Meziane 11 Représentation codée Implicite  En représentation codée implicite, les données sont codées dans le message selon un style de codage, mais celui‐ci reste implicite, car le message ne véhicule aucune revendication explicite sur la présence d’un codage dans le message et aucune référence aux règles correspondantes d’encodage/décodage.  Dans un message SOAP 1.1, cela se traduit par l’absence de la déclaration SOAP‐ENV:encodingStyle ou par la présence de déclarations de type : SOAP‐ENV:encodingStyle=""  Le typage implicite correspond au renvoi, par le vocabulaire XML, à un schéma XML Schema, qui contient la définition de l’élément et de son type; 15/10/2022 Les Services Web H. Meziane 12 Le modèle de données du style de codage SOAP 1.1  La spécification SOAP 1.1 désigne les données codées dans un message sous le terme de valeurs.  Une valeur peut être une valeur simple, en correspondance avec les données atomiques, ou bien une valeur composite (en correspondance avec les données structurées).  Une valeur est toujours représentée dans un message SOAP (en‐tête, corps, erreur) comme le contenu d’un élément XML.  Une valeur simple est représentée par les données‐ caractères du contenu d’un élément « feuille », qui n’a pas de sous‐éléments. Une valeur simple est toujours typée. 15/10/2022 Les Services Web H. Meziane 13 Exemples Valeur simple 0000123456A L’élément dont l’occurrence est présentée ci‐dessus est défini dans le schéma ens : Une valeur composite est un agrégat récursif de valeurs simples, comme : Chaque valeur simple agrégée dans une valeur composite est Jean distincte des autres soit par un nom, soit par une position Charles relative, soit par les deux. Le nom Delarochefoucauld associé d’une valeur est appelé accesseur : accountcode est l’accesseur de 40001 0000123456A 00987 0000123456A 92 15/10/2022 Les Services Web H. Meziane 14 Les valeurs et les types simples  Le style de codage SOAP s’appuie sur le système de typage de données atomiques proposé par la spécification XML Schema.  L’espace du nom associé aux types de données de schéma XML, XML Schema Datatypes (XSD), est comme suit : xmlns:xsd="http://www.w3.org/2001/XMLSchema" Il fournit les types courants comme : strings, floats, doubles, et integers. Les types simple proposés par la spécification XSD sont listés dans le tableau 1. 15/10/2022 Les Services Web H. Meziane 15 Types de données simples (2/2) Simple type Example Tab.1 A list of the main XML Schema string Web services built‐in simple types Boolean true, false, 1, 0 Simple type Example float ‐INF, ‐1E4, ‐0, 0, 12.78E‐2, 12, INF, NaN nonNegativeInteger 0, 1, 126789 Double ‐INF, ‐1E4, ‐0, 0, 12.78E‐2, unsignedLong 0, 12678967543233 12, INF, NaN unsignedInt 0, 1267896754 Decimal ‐1.23, 0, 123.4, 1000.00 unsignedShort 0, 12678 binary 100010 unsignedByte 0, 126 integer ‐126789, ‐1, 0, 1, 126789 positiveInteger 1, 126789 nonPositiveInteger ‐126789, ‐1, 0 Date 1999‐05‐31 negativeInteger ‐126789, ‐1 Time 13:20:00.000, long ‐1, 12678967543233 13:20:00.000‐05:00 int ‐1, 126789675 ……… short ‐1, 12678 Byte ‐1, 126 15/10/2022 Les Services Web H. Meziane 16 Typage d’une valeur simple (1/2)  SOAP 1.1 impose l’annotation du typage des valeurs simples dans le message et propose deux approches pour désigner les types :  le typage implicite, qui correspond au renvoi, par le vocabulaire XML, à un schéma XML Schema, qui contient la définition de l’élément et de son type. Exemple : 0000123456A http://www.w3.org/2001/XMLSchema Dans le schéma ens, l’élément accountcode est ainsi défini : Rappel : http://www.w3.org/2001/XMLSchema : cet espace de noms définit la plus grande partie du vocabulaire d’XML Schema. Il est utilisera systématiquement le préfixe xsd: pour référencer cet espace de noms. 15/10/2022 17 Les Services Web H. Meziane Typage d’une valeur simple (2/2)  Le typage explicite Le type peut aussi être directement désigné via l’attribut xsi:type : 0000123456A Le style de codage SOAP 1.1 admet des accesseurs polymorphes (dans le même message), à savoir la réutilisation des accesseurs pour plusieurs données de types différents. La spécification SOAP 1.1 impose dans ce cas l’utilisation de xsi:type sur chaque occurrence de l’accesseur en question. Exemple : 29.95 ou xsi:type="xsd:decimal"> 29.95 29.95 Rappel : http://www.w3.org/2001/XMLSchema‐instance : cet espace de noms définit des attributs qui peuvent être utilisés dans tout document XML (type, nullschemaLocation et noNamespaceSchemaLocation). Pour simplifier , on utilisera systématiquement le préfixe xsi: pour référencer cet espace de noms. 15/10/2022 Les Services Web H. Meziane 18 Exemple : Une réponse SOAP avec le data‐type double xmlns:ns1="urn:examples:priceservice’’ 54 19 10 Le arrayType est un ensemble de 3 elements xsd:integer. Chaque element dans le tableau est spécifié comme un element item. 15/10/2022 Les Services Web H. Meziane 22 Exemple 2 : Une réponse SOAP avec un tableau de valeur double xmlns:ns1="urn:examples:pricelistservice" 54.99 19.99 ……. 15/10/2022 Les Services Web H. Meziane 23 Structs Par contraste avec array, struct contient des valeurs multiples, mais chaque élément est spécifié avec un unique élément accesseur. Exemple : Considérons un item dans un catalogue de produit. Dans ce cas, struct peut contenir un nom de produit, un prix et sa description. Cette structure est représentée dans un message SOAP comme suit : 15/10/2022 Les Services Web H. Meziane 24 Structs : Exemple

Use Quizgecko on...
Browser
Browser