Cours 6 : Les Web Services et SOAP Mars Version 1.0 -

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Fondations des services Web Les technologies SOAP
Les Web Services Schéma Directeur des Espaces numériques de Travail
Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Introduction aux Web Services Partie 1. Technologies XML
Le struts validator – framework de validation
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
Introduction aux environnements répartis
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
JXDVDTEK – Une DVDthèque en Java et XML
Les services Web Jeremy Fierstone
Les espaces de nommage XML par Philippe Poulard 1
Cours 6 : Les Web Services et UDDI Mars Version 1.0 -
Cours 5 : Les Web Services et WSDL Mars Version 1.0 -
1 Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février Version 1.0 -
1 Les technologies XML Cours 4 : Les Web Services et XML- RPC Février Version 1.0 -
Domaines nominaux XSLT
TP 3-4 BD21.
Manipulation d’XML avec XSL
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Génie Documentiel Delacrétaz Jean-Marc
Les Web Services avec .Net
Introduction aux Web Services Partie 1. Technologies HTML-XML
Common Gateway Interface
Chapitre 5 Web Services : Le nouveau standard JAX-WS 2.0
Les Services Web Avec.NET version 1.1. Un service Web en bref… Méthodes ou objets accessible à distance via SOAP (Simple Object Access Protocol ); SOAP.
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
28 novembre 2012 Grégory Petit
RDF(S)
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
SSO : Single Sign On.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
IFT 6800 Atelier en Technologies d’information
Web sémantique : Web de demain
Web Services HTTP UDDI SOAP WSDL Besnik SELJIMI, Novembre 2003
RPC / MOM : Comparaison.
Projet de Master première année 2007 / 2008
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Initiation au web dynamique
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Initiation à XML Sebti Foufou.
Animateur : Med HAIJOUBI
‘‘Open Data base Connectivity‘‘
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
CENTRALISATION DES CANDIDATS LOCATAIRES
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
A. Roussanaly - Université Nancy2 SOAP Master Miage SID – Université NANCY2.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
XSD XML Schema Definition Année universitaire UP web.
Présentation TELW M2 Contexte : passage de la matière de M1 en M2 Transformation cours->TDs Sujet plus haut niveau basé : Web Services echanges au format.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
TWP Toolkit Formation 21/10/2009.
Web Services.
Cours 8 : Les Web Services et XML-RPC Février Version 1.0 -
Transcription de la présentation:

Cours 6 : Les Web Services et SOAP Mars 2011 - Version 1.0 - 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. 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. Infosets XML : structure arborescente avec comme racine un nœud de type Document Information Item. On peut définir un infoset comme la représentation d’un document XML bien formé ainsi que l’ensemble des informations nécessaires à la manipulation des données de ce document.

InfoSet : http://www.w3.org/TR/xml-infoset. 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.

Résolution des problèmes de sécurité : 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 …

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

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: nnnn SOAPAction: "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>

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>

Eléments d’un message SOAP : 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

NameSpaces 1.1 NameSpaces 1.2 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

SOAP Header : Mécanisme d’extension du protocole SOAP 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.

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.

SOAP Body : Le Body contient le message à échanger 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.

SOAP Fault : Balise permettant de signaler des cas d’erreur. 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.

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.

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>

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>

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é)

Simple value (string, integers,etc) Compound value (array, struct, …) 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

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

<element name=“age” type=“int”> 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>

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>

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> <Nom>Dupond</Nom> <Prenom>Serge</Prenom> <Age>40</Age> </xyz:TabPersonne>

Tableaux Multidimentionnels 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>