Services Web
Services Web
Services Web
Dan VODISLAV
Université de Cergy-Pontoise
Master Informatique M1
Cours IED
Plan
• Principes
• SOAP
• WSDL
• UDDI
Scénario d’utilisation
Schéma d’interaction
Source: G. Alonso
Source: R. Voyer
• Technologies de base
– SOAP : « Simple Object Access Protocol »
• RPC par appel de service web
• Protocole de communication à l’appel de services web
– WSDL : « Web Service Description Language »
• Langage de description de services web
• Paramètres, type du résultat, opérations fournies par le service, points d’accès
– UDDI : « Universal Description, Discovery and Integration »
• Protocole de description et d’interaction avec des annuaires de services web
• Couvre 4 aspects
– Format XML des messages échangés
– Comment un message SOAP est transporté sur le web par HTTP, SMTP.
– Règles de traitement des messages SOAP
– Conventions de transformation d’un appel RPC en SOAP et
d’implémentation d’une communication RPC
SOAP: objectifs
• Raisons pratiques
– Éviter les problèmes de CORBA sur le web, qui doit en pratique
s’appuyer de toute façon sur HTTP à cause des pare-feu
– Disposer d’une couche facile à mettre en œuvre au-dessus des
plateformes middleware pour une intégration à travers le web
– Transformer SOAP par la suite en support générique d’échange de
messages sur le web, au-delà de RPC et de HTTP
Exemple
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI"
SOAP-ENV:mustUnderstand=“true">
5
</t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DEF</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
• Message d’appel
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<add soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<op1 xsi:type="xsd:int">2</op1>
<op2 xsi:type="xsd:int">5</op2>
</add>
</soapenv:Body>
</soapenv:Envelope>
• Message réponse
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<addResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<addReturn xsi:type="xsd:int">7</addReturn>
</addResponse>
</soapenv:Body>
</soapenv:Envelope>
SOAP et HTTP
• « Binding » SOAP
– Description de la façon dont les messages SOAP sont envoyés en utilisant
un protocole de transport donné
– « Binding » typique pour SOAP : HTTP
Éléments WSDL
Document WSDL
Description abstraite du service
<description xmlns="http://www.w3.org/2006/01/wsdl"
targetNamespace= "http://greath.example.com/2004/wsdl/resSvc"
xmlns:tns= "http://greath.example.com/2004/wsdl/resSvc"
xmlns:ghns = "http://greath.example.com/2004/schemas/resSvc"
xmlns:wsoap= "http://www.w3.org/2006/01/wsdl/soap"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<documentation> This document describes … </documentation>
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://greath.example.com/2004/schemas/resSvc"
xmlns="http://greath.example.com/2004/schemas/resSvc">
<xs:element name="checkAvailability" type="tCheckAvailability"/>
<xs:complexType name="tCheckAvailability">
<xs:sequence>
<xs:element name="checkInDate" type="xs:date"/>
<xs:element name="checkOutDate" type="xs:date"/>
<xs:element name="roomType" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="checkAvailabilityResponse" type="xs:double"/>
<xs:element name="invalidDataError" type="xs:string"/>
</xs:schema>
</types>
• Motifs de base
– IN-ONLY : un seul message d’entrée, sans erreurs
– ROBUST IN-ONLY : pareil, mais avec erreur possible
– IN-OUT
• Message d’entrée reçu en provenance d’un noeud N
• Message de sortie envoyé au noeud N
• Erreurs, qui si elles apparaissent, remplacent le message de sortie
<binding name="reservationSOAPBinding"
interface="tns:reservationInterface"
type="http://www.w3.org/2006/01/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">
<fault ref="tns:invalidDataFault" wsoap:code="soap:Sender"/>
<operation ref="tns:opCheckAvailability"
wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/>
</binding>
<service name="reservationService" interface="tns:reservationInterface">
<endpoint name="reservationEndpoint"
binding="tns:reservationSOAPBinding"
address ="http://greath.example.com/2004/reservation"/>
</service>
</description>
UDDI
• Versions
– Version 1: les bases d’un annuaire de services
– Version 2: adaptation à SOAP et WSDL
– Version 3: redéfinition du rôle UDDI, accent sur les implémentations
privées, sur l’interaction entre annuaires privés et publics
• Types d’information
– Pages blanches: données sur le fournisseur du service (nom, adresse, …)
– Pages jaunes: classification du type de service, basée sur des standards
– Pages vertes: info technique sur l’utilisation du service
• Pointeurs sur les descriptions WSDL, qui ne font pas partie de l’annuaire
BindingTemplate
bindingKey, serviceKey,
description, categories,
access point tModel
name, description,
overview document,
url pointer to WSDL
Source: G. Alonso
Cours IED (UCP/M1): Services web Page 29