Software">
Services Web
Services Web
Services Web
Université de Cergy-Pontoise
Master Informatique M1
Cours IED
Plan
• Principes
• Services SOAP
– WSDL
– UDDI
– Services SOAP en Java
• Services REST
– Services REST en Java
Scénario d’utilisation
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
• Interopérabilité system/plateforme
– 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> H
<t:Transaction E
xmlns:t="some-URI"
SOAP-ENV:mustUnderstand=“true">
A
5 D
</t:Transaction> E
</SOAP-ENV:Header>
R
<SOAP-ENV:Body> B
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DEF</symbol> O
</m:GetLastTradePrice> D
</SOAP-ENV:Body> Y
</SOAP-ENV:Envelope>
Cours IED (UCP/M1): Services web Page 12
En-tête SOAP
• 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
• Idées
– Directement sur HTTP (pas de surcouche comme SOAP)
– Interface uniforme = méthodes HTTP
– Manipulation de données/ressources identifiées par de URI
– Services sans état : tous les informations nécessaires se trouvent dans les
paramètres d’appel
– Orienté données: actions de base sur les données/ressources (consultation,
création, mise à jour, suppression)
• SOAP: orienté service abstrait, fonctionnalités potentiellement complexes
REST CRUD
• En pratique on peut:
– Programmer des opérations autres que CRUD
– Associer des opérations CRUD à d’autres méthodes HTTP
– Ne pas exposer les objets à travers des URL
• Ce qui reste:
– On associe des opérations à des méthodes HTTP et à des URL / requêtes
– Le type de retour peut être paramétré selon différents critères
– Ca reste une communication HTTP
• SOAP
– Plus évolué
– Indépendant du protocole qui achemine les messages
– Standards associés pour la sécurité, la fiabilité, les transactions, etc.
– Permet aux applications d’exposer un minimum de leur fonctionnement
– Peut garder un état au niveau du service suite aux appels
• REST
– Simple – prise en main rapide
– Basé directement sur HTTP, plus performant que SOAP
– Accès uniforme aux ressources / objets
– Limité à seulement quatre opérations
– Expose les objets manipulés à un adressage direct sur le web
– Plusieurs représentations des objets disponibles
Aujourd’hui: 85% des services disponibles sont REST
WDSL
Top-
Client down
Serveur d’applications
Java
SOAP
Client
PHP Servlet JAX-WS
Client
JavaScript Bottom-
up
Classes Java
annotées