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 &lt; &amp;
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

Documents pareils