Services Web - Département Informatique Cnam Paris
Transcription
Services Web - Département Informatique Cnam Paris
Services Web services web - D.Enselme 1 Qu'est-ce qu'un service web ? Né du besoin de communiquer de programme à programme en utilisant comme support la toile mondiale. Un service Web est un service offert par une application à d'autres applications via le Web. Une application informatique quelconque qui rend ses services disponibles sur un réseau en utilisant des technologies et protocoles standards largement utilisés comme XML et HTTP services web - D.Enselme 2 Scénario pour les services Web Une application métier envoie une requête à un service situé à une URL donnée en utilisant le protocole SOAP sur HTTP. Le service reçoit la requête, la traite, et retourne une réponse. Exemple : un service propose de calculer une route optimisée pour des livraisons Une requête contenant la destination finale de la livraison. Cette requête est traitée par le service web qui détermine la route la moins couteuse La réponse est, en général, retournée comme une opération indépendante de la requête services web - D.Enselme 3 Exemples d'applications Commerce électronique : paiement sécurisé Commerce électronique : calcul de frais de port Commerce électronique : suivi de commandes Offre de services : conversion de devises Offre de services : tout service comportant un accès à des données (température, trafic, …) ou une algorithmique plus ou moins complexe. Commerce électronique : simulation de crédits services web - D.Enselme 4 2 types d'utilisation Proposer des composants réutilisables : - Bon nombre de composants sont souvent utiles dans diverses applications - Plutôt que les réécrire, ils sont offerts en tant que service sur le Web Résoudre les problèmes d'interopérabilité entre applications : - échange de données entre différentes applications et différentes plate-formes services web - D.Enselme 5 Pour fonctionner XML + HTTP Producteurs et consommateurs de services Web sont capables de communiquer même s'ils utilisent des SI (Systèmes d'Informations) différents. Ils peuvent aussi utiliser des plate-formes d'exécution différentes Une application utilisant les services Web peut publier aussi bien une fonction qu'un message vers le reste du monde XML rend les données portables. XML est un langage capable d'exprimer des messages complexes et qui peut être utilisé entre différentes plate-formes et langages de programmation Les services Web utilisent XML pour coder puis décoder des données HTTP est le protocole le plus largement répandu sur l'Internet services web - D.Enselme 6 Organisation actuelle des standards UDDI Ws-Security WS-Transaction Bpel4WS, .. Services Services de Services de Services de d’annuaire sécurité transaction synchronisation SOAP, WSDL : HTTP, SMTP, MOM(JMS) : Interactions de communication Transmission effective SOAP (Simple Object Access Protocol) UDDI (Universal Description, Discovery and Intgration) WSDL (Web Services Description Language) services web - D.Enselme 7 SOAP (Simple Object Access Protocol) SOAP est un protocole de communication SOAP définit un format pour l'envoi de messages SOAP est conçu pour des communications via Internet SOAP est indépendant de toute plate-forme d'exécution SOAP est indépendant de tout langage de programmation SOAP est fondé sur XML SOAP utilise des protocoles applicatifs Internet pour acheminer ses messages (HTTP ou SMTP et MOM pour le mode asynchrone) SOAP n'est pas bloqué par les murs anti-feux (« firewalls ») SOAP est un standard W3C services web - D.Enselme 8 WSDL (Web Services Definition Language) WSDL est un standard W3C de description d'interfaces de services WSDL permet de décharger les utilisateurs des détails techniques de réalisation d'un appel WSDL est fondé sur XML et XML Schéma services web - D.Enselme 9 UDDI (Universal Description, Discovery and Integration) UDDI est un annuaire réparti pour la description de services Web Dans cet annuaire, les services Web sont décrits avec WSDL UDDI est accessible au moyen de SOAP services web - D.Enselme 10 Chapitre 1 XML Extensible Markup Language services web - D.Enselme 11 Rôle de XML ● ● Langage de balises à l'instar de HTML Sert à représenter et à transporter des données et, non comme HTML, à les afficher ● Les balises ne sont pas, comme HTML, prédéfinies ● Chaque utilisateur doit définir ses propres balises <message securite="secret défense"> <de>Jean</de> <pour>Jacques</pour> <objet>Rappel</objet> <texte>On se voit demain à 10h</texte> </message> services web - D.Enselme 12 Intérêt de XML Avec XML, les données sont enregistrées en format texte. Le partage des données entre applications s'en trouvent simplifié Les données peuvent être facilement échangées entre systèmes incompatibles XML permet de définir de nouveaux langages de balises (tags). Langage de niveau meta services web - D.Enselme 13 Caractéristiques de XML Extensibilité: pouvoir définir de nouvelles balises. Structuration : pouvoir modéliser des données d'une complexité quelconque. Validation : pouvoir vérifier la conformité d'une donnée avec un type (un modèle de structure). Indépendance du média: pouvoir formater un contenu selon des représentations diverses. Interopérabilité : Pouvoir échanger et traiter une donnée en utilisant de nombreux types de logiciels. services web - D.Enselme 14 Exemple de document XML Définit la version de XML et le type d'encodage utilisé Racine du document spécifiant une bibliothèque Un premier élément décrivant un livre par 6 éléments fils Un second élément de même type que le précédent services web - D.Enselme 15 Exemple : structure arborescente BIBLIO Attribut : "SUBJ ECT" fils BOOK AUTHOR FIRSTNAME TITLE LASTNAME Attributs : "LANG" et "SUBJECT" PUBLISHER NAME DATEPUB PLACE services web - D.Enselme 16 Documents bien formés Si un document XML respecte les règles de la grammaire XML on dit qu'il est bien formé. Règles d'un document bien formé : Toute balise ouverte doit être fermée, Ex: <livre> </livre> L'ensemble des balises est correctement imbriqué. Ex : Entrelacement mal formé <p> <b> ….</p> </b> Les valeurs d'attributs sont entre guillemets" Les balises uniques correspondent à des documents vides et sont notées: Ex : <IMG source="image.gif"/> Les caractères < & sont notés < & Un document commence par une déclaration XML <?xml version="1.0" encoding ="iso-8859-1" standalone="yes"?> services web - D.Enselme 17 Conclusion sur XML Un langage simple. XML rend possible l’arrivée d’une nouvelle génération d’outils logiciels pour des plate-formes hétérogènes. de manipulation, de transmission, de visualisation de données distribuées. XML formate des données échangées par messages ou par invocations de méthodes. XML permet de définir des documents et des données services web - D.Enselme 18 XML Schema Un schéma XML est un document XML. Permet de définir la structure et les contenus des documents Permet de typer les données : Par un ensemble d types primitifs Par la création de types de données dérivés ( relation d'héritage) services web - D.Enselme 19 Typage d’une adresse postale au moyen d’un schéma XML <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"> <xsd:complexType name="Addresse_postale_france" > <xsd:sequence> <xsd:element name="nom" type="xsd:string" /> <xsd:element name="rue" type="xsd:string" /> <xsd:element name="ville" type="xsd:string" /> <xsd:element name="departement" type="xsd:string" /> <xsd:element name="code_postal" type="xsd:decimal" /> </xsd:sequence> <xsd:attribute name= "pays" type="xsd:NMTOKEN" use="fixed" value="FR"/> </xsd:complexType> </xsd:schema> services web - D.Enselme 20 Exemple d’adresse postale en XML: le document <?xml version="1.0"?> <Addresse_postale_France pays="France"> <nom>Mr Jean Dupont</nom> <rue>rue Camille Desmoulins</rue> <ville>Paris</ville> <departement>Seine</departement> <code_postal>75600</code_postal> </Addresse_postale_france > services web - D.Enselme 21 Déclaration des éléments Un élément XML est déclaré par la balise ‘element’ de XML schéma qui a de nombreux attributs. Les deux principaux attributs sont: name : Le nom de l’élément (de la balise associée). type : Le type qui peut être simple ou complexe. Exemple de base <xsd:element name="code_postal" type="xsd:decimal"/> services web - D.Enselme 22 Déclaration des attributs Un attribut est une valeur nommée et typée associée à un élément. Le type d’un attribut défini en XML schéma est obligatoirement simple. <xsd:complexType name="TypeRapport"> <xsd:attribute name= "Date_creation" type="xsd:date"/> …... </xsd:complexType> <xsd:element name="Rapport" type="TypeRapport"/> services web - D.Enselme 23 Autres attributs L'élément attribute de XML Schema peut avoir deux attributs optionnels : use et value. On peut ainsi définir des contraintes de présence et de valeur. Selon ces deux attributs, la valeur peut : être obligatoire ou non être définie ou non par défaut. Exemple: <xsd:attribute name= "Date_peremption" type="xsd:date" use="default" value= "2005-12-31"/> services web - D.Enselme 24 Types simples Types simples prédéfinis : string, integer, boolean ... <xsd:element name="code_postal " type="xsd:integer"/> Types simples définis par dérivation d'un autre type simple, au moyen de l’élément <xsd:simpleType ...> Exemple de type simple : dérivation par restriction. <xsd:simpleType name= "DeuxDecimales"> <xsd:restriction base="xsd:decimal"> <xsd:fractionDigits value="2" /> </xsd:restriction> </xsd:simpleType> services web - D.Enselme 25 Types complexes Déclarés au moyen de l'élément <xsd:complexType name="... Exemple <xsd:complexType name= "TypePrix"> <xsd:simpleContent> <xsd:extension base="DeuxDecimales"> <xsd:attribute name="Unite" type= "FrancEuro" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Trois façons de composer des éléments dans un type complexe: sequence, choice, all. services web - D.Enselme 26 Types complexes: Sequence Un type sequence est défini par une suite de sous-éléments qui doivent être présents dans l'ordre donné. Le nombre d'occurences de chaque sous-élément est défini par les attributs minOccurs et maxOccurs. <xsd:complexType name= "Commande"> <xsd:sequence> <xsd:element name= "Ad_livraison" type="Addresse"/> <xsd:element name= "Ad_facturation" type="Addresse"/> <xsd:element name= "texte" type="xsd:string" minOccurs="1" /> <xsd:element name="items" type="Items" maxOccurs= "30" /> </xsd:sequence> </xsd:complexType services web - D.Enselme 27 Types complexes: Choice Un seul des éléments listés doit être présent. Le nombre d'occurences possible est déterminé par les attributs minOccurs et maxOccurs de l’élément. <xsd:complexType name= "type_temps"> <xsd:choice > <xsd:element name= "Noire" type="Note" minOccurs="1" maxOccurs="1" /> <xsd:element name= "Croche" type="Note" minOccurs="2" maxOccurs="2" /> </xsd:choice> </xsd:complexType> services web - D.Enselme 28 Dérivation de types ● On peut créer de nouveaux types à partir de types existants : ● Par restriction <xsd:simpleType name= "ChiffresOctaux"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0" /> <xsd:maxInclusive value= 7" /> </xsd:restriction> </xsd:simpleType> ● Par extension <xsd:complexType name= "mesure"> <xsd:simpleContent><xsd:extension base="xsd:Decimal"> <xsd:attribute name="unite" type="xsd:NMTOKEN"/> </xsd:extension></xsd:simpleContent> </xsd:complexType> <xsd:element name= "temperature" type= "mesure"/> <temperature unit="Kelvin">230</temperature> ● Par union, par liste services web - D.Enselme 29 Chapitre 2 SOAP Simple Object Access Protocol services web - D.Enselme 30 Pourquoi SOAP ● ● Le développement d'applications impose la communication entre programmes via Internet Historiquement : ● ● ● les applications communiquaient en utilisant le RPC (Remote Procedure call) entre objets. mais les « firewalls » et les proxys bloquent ce type de trafic Une meilleure solution : ● communication entre application basée sur HTTP ● HTTP est largement répandu, supporté par les navigateurs et les serveurs ● SOAP offre cette possibilité services web - D.Enselme 31 SOAP : 2 modes SOAP : un mode de communication par message asynchrone avec des continuations …. client intermédiaire 1 intermédiaire n destinataire SOAP : un mode appel de procédure distante (un mode requête réponse à deux messages sous produit du mode message précédent). …. client serveur client inter1 inter n serveur …. client serveur services…. web - D.Enselme 32 Structure d'un message SOAP ● ● Un message SOAP est un document XML qui contient les éléments : L'enveloppe, élément racine du document XML : ● définit le contenu du message ● sa structure est spécifiée par le Schéma XML : http://www.w3.org/2003/05/soap-envelope ● contient l'entête (Header) ● contient le corps (Body) (informations d'appel et de réponse) ● et un élément appelé Fault pour les erreurs te les informations d'état services web - D.Enselme 33 Enveloppe SOAP Soap Envelope Envelope Soap Header Header parts Header Body Soap Body Body parts Header Parts Body Parts Soap Faults services web - D.Enselme Soap Faults 34 Enveloppe SOAP <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> ... Informations concernant le message ... </soap:Envelope> Espace de noms définit enveloppe comme une Enveloppe SOAP Définit les règles pour coder les instances de types de données échangées par les programmes (syntaxe de transfert) services web - D.Enselme 35 Exemple d'enveloppe <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <soapenv:Header> <authentification soap:actor="URI serveur authentification" soap:mustUnderstand="1">> <userIdentifier>Nom d’utilisateur</userIdentifier> <credential>Valeur de l’authentifiant</credential> </authentification> Spécifie des récepteurs autres que le destinataire final </soapenv:Header> … Corps de l'enveloppe … </soapenv:Envelope> 1 indique que le receveur de traitement doit reconnaître l'élément services web - D.Enselme 36 Exemple d'enveloppe <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <soapenv:Header> <authentification soap:actor="URI serveur authentification" soap:mustUnderstand="1">> <userIdentifier>Nom d’utilisateur</userIdentifier> <credential>Valeur de l’authentifiant</credential> </authentification> </soapenv:Header> contient le message SOAP final vers le destinataire <soapenv:Body> <EnvoiFacture> <DonneeFacture> xxxxx </DonneeFacture > </EnvoiFacture> </soapenv:Body> services web - D.Enselme 37 </soapenv:Envelope> Erreurs SOAP Les erreurs sont définies dans l’élément Fault. L'élément optionnel Fault apparaît comme élément fils de Body Sous Élément <faultcode> <faultstring> <faultactor> <detail> Codes d'erreurs VersionMismatch MustUnderstand Client Server Description Code identifiant un erreur. Message en clair décrivant l’erreur. Acteur ayant causé l’erreur. Détails complémentaires spécifiques. L’espace de nommage pour l’enveloppe est invalide. Un élément mustUnderstand = "1" n’a pas été compris. Le message est mal construit, les données sont incorrectes. services web - D.Enselme 38 Le serveur n’a pas pu traiter le message. Exemple de message d’erreur <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <soap:Fault> <faultcode> soap:Server </faultcode> <faultstring> Erreur du serveur </faultstring> <detail> <e:DetailsFautesServeurs xmlns:e="URI xxx"> <message> Connexion impossible </message> <erreurcode> 3 </erreurcode> <e:DetailsFautesServeurs></detail> </soap:Fault> </soap:Body> </soap:Envelope> services web - D.Enselme 39 Types d'enveloppes Catégories de messages échangés: Document: Le corps du message Soap peut contenir n’importe quel document XML. Rpc: Le corps du document contient obligatoirement le nom de la méthode invoquée et les données correspondent aux arguments de cette méthode. Nature de la sérialisation des données: Encoded: Règles particulières d’encodage définies par SOAP. Literal: Pas de règles particulières d’encodage (la donnée échangée est considérée comme un document XML). Deux exemples typiques d’association: Rpc/Encoded Document/Literal services web - D.Enselme 40 Exemple : requête S0AP avec HTTP POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> La requête émise vers le serveur </m:GetStockPrice> </soap:Body> </soap:Envelope> Paramètre de la requête services web - D.Enselme 41 Exemple : réponse S0AP avec HTTP HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> Réponse obtenue </soap:Body> </soap:Envelope> services web - D.Enselme 42 Chapitre 3 WSDL ‘Web Services Description Language ’ 43 Introduction WSDL Comment spécifier un service Web (comment utiliser ce service). Exemple un site de commerce électronique. Comment construire les messages de requête, et analyser les messages de réponse, connaître le mode d’accès réseau. Exemple Soap sur HTTP en RPC à telle URI pour la cotation d’un produit, d’une valeur boursière. 44 <wsdl:definitions name="nmtoken"? targetNamespace="uri"?> Définition WSDL Document XML pour : pour décrire des services Web. pour localiser des services Web Structure du document, 4 éléments principaux : portType → définit le WS, les opérations offertes par le service Web et les messages impliqués message → messages utilisés par le service Web types → types de données utilisés par le service Web binding → protocole de communication utilisé 45 Structure d’une description (1/2) <wsdl:types> <xsd:schema> .…</xsd:schema> </wsdl:types> <wsdl:message name="nmtoken"> <part name="nmtoken" element="qname"? type="qname"?/> </wsdl:message> <wsdl:portType name="nmtoken"> <wsdl:operation name="nmtoken"> <wsdl:input name="nmtoken"? message="qname"> </wsdl:input> <wsdl:output name="nmtoken"? message="qname">? </wsdl:output> <wsdl:fault name="nmtoken" message="qname"> </wsdl:fault> </wsdl:operation> </wsdl:portType> 46 Structure d’une description (2/2) <wsdl:binding name="nmtoken" type="qname"> <wsdl:operation name="nmtoken"> <wsdl:input> </wsdl:input> <wsdl:output> </wsdl:output> <wsdl:fault name="nmtoken"> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="nmtoken"> <wsdl:port name="nmtoken" binding="qname"> </wsdl:port> </wsdl:service> </wsdl:definitions> 47 Ports WSDL <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> Nom du service Web Nom d'une opération de type Request-response <input message="getTermRequest"/> <output message="getTermResponse"/> Messages en entrée et en sortie </operation> </portType> 48 Types d'opérations ● ● ● ● One-way → l'opération peut recevoir un message mais ne retournera pas de réponse Request-response → l'opération peut recevoir une requête et retournera une réponse Solicit-response → l'opération peut envoyer une requête et attendra la réponse Notification → l'opération peut envoyer un message mais n'attendra pas la réponse <message name="newTermValues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> Opération de type One-way <portType name="glossaryTerms"> <operation name="setTerm"> <input name="newTerm" message="newTermValues"/> </operation> </portType > 49 Projection vers SOAP ● La projection ("binding") spécifie le format du message et le protocole pour le WS <binding type="glossaryTerms" name="b1"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation> <soap:operation soapAction="http://example.com/getTerm"/> <input> <soap:body use="literal"/> Il s'agit d'un document et non </input> d'un appel de procédure <output> à distance (rpc) <soap:body use="literal"/> </output> </operation> </binding> Le protocole utilisé est HTTP 50 Chapitre 4 UDDI ‘Universal Description Discovery and Integration’ 51 Introduction UDDI ● UDDI est un annuaire pour exposer des services offerts par des entreprises ● On y trouve les informations suivantes : Qui : (pages blanches) nom de l’entreprise, les contacts … Quoi, où : (pages blanches) classes et noms des services selon une taxinomie standard, adresses d’accès aux services (URI, adresses mail) Comment : (pages vertes) informations concernant les interfaces, leurs Propriétés, processus d'utilisation ● SOAP est utilisé pour accéder aux informations de l'annuaire 52