Introduction aux services Web
Thierry Hamon
Bureau H202 - Institut Galil´ee T´el. : 33 1.48.38.35.53 Bureau 150 – LIM&BIO – EA 3969 Universit´e Paris 13 - UFR L´eonard de Vinci 74, rue Marcel Cachin, F-93017 Bobigny cedex T´el. : 33 1.48.38.73.07, Fax. : 33 1.48.38.73.55
thierry.hamon@univ-paris13.fr
http://www-limbio.smbh.univ-paris13.fr/membres/hamon/PWA- 20122013
Encore plus dynamique !
Evolution du Web
G´ en´ eration 1 : HTML statique (1993 – Web 1.0), CSS (1996)
G´ en´ eration 2 : Application Web ` a l’aide du HTML et de bases
de donn´ ees (HTML dynamique, XML – 1994/2000 – Web 1.5)
G´ en´ eration 3 : Services Web (2005 – Web 2.0)
Service Web
D´ efinition : Application accessible depuis le Web fournissant des donn´ ees
des services ` a d’autres applications
un objet m´ etier pouvant ˆ etre d´ eploy´ e sur Internet Utilisation
des protocoles standard d’Internet (SOAP, HTTP)
d’un langage standard pour d´ ecrire son interface (WSDL,
XML)
Service Web
Carat´ eristiques
Faible d´ ependance vis-` a-vis des technologies et des protocoles plate-forme (UNIX, Windows, ...)
impl´ ementation (VB, C#, Java, ...)
architecture sous-jacente (.NET, J2EE, Axis...)
R´ eutilisation dans un environnement ouvert
Objectifs
Remplacement des protocoles actuels (RPC, RMI, DCOM) Interop´ erabilit´ e et interaction des serveurs Web et de composants h´ et´ erog` enes
G´ en´ eralisation des serveurs Web utilisant des CGI
Ind´ ependance des composants grˆ ace ` a un protocole standard SOAP
Approche pour les applications B2B (Business to Business),
EAI (Enterprise Application Integration) et P2P (Peer to Peer)
Protocoles et technologies associ´ es
D´ efinition d’objets distribu´ es, bas´ es sur des standards XML Protocole de communication des services Web : SOAP Description des services Web : WSDL ( IDL)
Enregistrement et d´ ecouverte de services Web : UDDI Standards du W3C : XML, SOAP, WSDL
Standards industriels : UDDI, ebXML
Propri´ etaires : DISCO, WSDD, WSFL, ASMX, ...
Impl´ ementations actuelles : Microsoft .Net
Sun JavaONE : J2EE + Web services (WSDP = JAXP, JAX-RPC, JAXM...)
Apache XSOAP / Axis, IBM WSTK
Oracle, Bea, Iona, Enhydra ...
Exemples de services existants
Google (http://www.google.com/apis/) : acc` es gratuit mais limit´ e (1000 requˆ etes par jour apr` es enregistrement).
Trois op´ erations : recherche
obtention d’une page depuis le cache correction orthographique
Amazon (http://associates.amazon.com/exec/panama/
associates/join/developer/resources.html) : acc` es gratuit mais limit´ e (1 requˆ ete par seconde apr` es
enregistrement), op´ eration de recherche et de gestion de
panier d’achats
Structure d’un service Web
Architecture de base
Trois composants :
Fournisseur de service (service provider ) : d´ efinit le service
publie sa description dans l’annuaire r´ ealise les op´ erations
Annuaire (discovery agency ) :
re¸ coit et enregistre les descriptions de services publi´ ees par les fournisseurs
re¸ coit et r´ epond aux recherches de services lanc´ ees par les clients
Client (service requestor ) :
obtient la description du service grˆ ace ` a l’annuaire
utilise le service
El´ ements de l’architecture
SOAP
SOAP (Simple Object Access Protocol)
version 1.1 : mai 2000 (http ://www.w3c.org/TR/SOAP/) version 1.2 : en cours (CR en d´ ecembre 2002)
Cadre g´ en´ eral permettant l’´ echange de donn´ ees structur´ ees au format XML
Protocole de transport de ces donn´ ees bas´ e sur HTTP
El´ ements de l’architecture
SOAP
<?xml v e r s i o n= ’ 1 . 0 ’ e n c o d i n g= ’UTF−8 ’ ?>
<e n v : E n v e l o p e x m l n s : e n v=” h t t p : // s c h e m a s . x m l s o a p . o r g / s o a p / e n v e l o p e / ” x m l n s : x s i=” h t t p : //www . w3 . o r g / 1 9 9 9 / XMLSchema−i n s t a n c e ”
x m l n s : x s d=” h t t p : //www . w3 . o r g / 1 9 9 9 / XMLSchema”>
<e n v : B o d y>
<n s 1 : d o G o o g l e S e a r c h x m l n s : n s 1=” u r n : G o o g l e S e a r c h ”
e n v : e n c o d i n g S t y l e=” h t t p : // s c h e m a s . x m l s o a p . o r g / s o a p / e n c o d i n g / ”>
<k e y x s i : t y p e =” x s d : s t r i n g ”>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0</ k e y>
<q x s i : t y p e =” x s d : s t r i n g ”>s h r d l u w i n o g r a d m a c l i s p t e l e t y p e</ q>
<s t a r t x s i : t y p e =” x s d : i n t ”>0</ s t a r t>
<m a x R e s u l t s x s i : t y p e =” x s d : i n t ”>10</ m a x R e s u l t s>
<f i l t e r x s i : t y p e =” x s d : b o o l e a n ”>t r u e</ f i l t e r>
<r e s t r i c t x s i : t y p e =” x s d : s t r i n g ”></ r e s t r i c t>
<s a f e S e a r c h x s i : t y p e =” x s d : b o o l e a n ”>f a l s e</ s a f e S e a r c h>
<l r x s i : t y p e =” x s d : s t r i n g ”></ l r>
<i e x s i : t y p e =” x s d : s t r i n g ”>l a t i n 1</ i e>
<o e x s i : t y p e =” x s d : s t r i n g ”>l a t i n 1</ o e>
</ n s 1 : d o G o o g l e S e a r c h>
</ e n v : B o d y>
</SOAP−E N V : E n v e l o p e>
El´ ements de l’architecture
WSDL
WSDL (Web Services Description Language) : version 1.1 : mars 2001
(http://www.w3.org/TR/2001/NOTE-wsdl-20010315) version 1.2 : en cours (Working Draft)
dialecte XML permettant de d´ ecrire un service web
El´ ements de l’architecture
WSDL
<?xml v e r s i o n=” 1 . 0 ” ?>
<d e f i n i t i o n s name=” T e m p e r a t u r e C o n v e r s i o n s ” t a r g e t N a m e s p a c e=” h t t p : // w e b s e r v i c e s . d a e h o s t i n g . com/ t e m p e r a t u r e ”>
<t y p e s>
<x s : s c h e m a e l e m e n t F o r m D e f a u l t=” q u a l i f i e d ” t a r g e t N a m e s p a c e=” h t t p : // w e b s e r v i c e s . d a e h o s t i n g . com/ t e m p e r a t u r e ”>
<x s : e l e m e n t name=” C e l c i u s T o F a h r e n h e i t ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” n C e l c i u s ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
<x s : e l e m e n t name=” C e l c i u s T o F a h r e n h e i t R e s p o n s e ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” C e l c i u s T o F a h r e n h e i t R e s u l t ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
<x s : e l e m e n t name=” F a h r e n h e i t T o C e l c i u s ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” n F a h r e n h e i t ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
El´ ements de l’architecture
WSDL
<x s : e l e m e n t name=” F a h r e n h e i t T o C e l c i u s R e s p o n s e ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” F a h r e n h e i t T o C e l c i u s R e s u l t ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
<x s : e l e m e n t name=” W i n d C h i l l I n C e l c i u s ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” n C e l c i u s ” t y p e=” x s : d e c i m a l ” />
<x s : e l e m e n t name=” nWindSpeed ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
<x s : e l e m e n t name=” W i n d C h i l l I n C e l c i u s R e s p o n s e ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” W i n d C h i l l I n C e l c i u s R e s u l t ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
El´ ements de l’architecture
WSDL
<x s : e l e m e n t name=” W i n d C h i l l I n F a h r e n h e i t ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” n F a h r e n h e i t ” t y p e=” x s : d e c i m a l ” />
<x s : e l e m e n t name=” nWindSpeed ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
<x s : e l e m e n t name=” W i n d C h i l l I n F a h r e n h e i t R e s p o n s e ”>
<x s : c o m p l e x T y p e>
<x s : s e q u e n c e>
<x s : e l e m e n t name=” W i n d C h i l l I n F a h r e n h e i t R e s u l t ” t y p e=” x s : d e c i m a l ” />
</ x s : s e q u e n c e>
</ x s : c o m p l e x T y p e>
</ x s : e l e m e n t>
</ x s : s c h e m a>
</ t y p e s>
<m e s s a g e name=” C e l c i u s T o F a h r e n h e i t S o a p R e q u e s t ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : C e l c i u s T o F a h r e n h e i t ” />
</ m e s s a g e>
<m e s s a g e name=” C e l c i u s T o F a h r e n h e i t S o a p R e s p o n s e ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : C e l c i u s T o F a h r e n h e i t R e s p o n s e ” />
</ m e s s a g e>
<m e s s a g e name=” F a h r e n h e i t T o C e l c i u s S o a p R e q u e s t ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : F a h r e n h e i t T o C e l c i u s ” />
</ m e s s a g e>
El´ ements de l’architecture
WSDL
<m e s s a g e name=” F a h r e n h e i t T o C e l c i u s S o a p R e s p o n s e ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : F a h r e n h e i t T o C e l c i u s R e s p o n s e ” />
</ m e s s a g e>
<m e s s a g e name=” W i n d C h i l l I n C e l c i u s S o a p R e q u e s t ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : W i n d C h i l l I n C e l c i u s ” />
</ m e s s a g e>
<m e s s a g e name=” W i n d C h i l l I n C e l c i u s S o a p R e s p o n s e ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : W i n d C h i l l I n C e l c i u s R e s p o n s e ” />
</ m e s s a g e>
<m e s s a g e name=” W i n d C h i l l I n F a h r e n h e i t S o a p R e q u e s t ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : W i n d C h i l l I n F a h r e n h e i t ” />
</ m e s s a g e>
<m e s s a g e name=” W i n d C h i l l I n F a h r e n h e i t S o a p R e s p o n s e ”>
<p a r t name=” p a r a m e t e r s ” e l e m e n t=” t n s : W i n d C h i l l I n F a h r e n h e i t R e s p o n s e ” />
</ m e s s a g e>
<p o r t T y p e name=” T e m p e r a t u r e C o n v e r s i o n s S o a p T y p e ”>
<o p e r a t i o n name=” C e l c i u s T o F a h r e n h e i t ”>
<d o c u m e n t a t i o n>
C o n v e r t s a C e l c i u s T e m p e r a t u r e t o a F a h r e n h e i t v a l u e
</ d o c u m e n t a t i o n>
<i n p u t m e s s a g e=” t n s : C e l c i u s T o F a h r e n h e i t S o a p R e q u e s t ” />
<o u t p u t m e s s a g e=” t n s : C e l c i u s T o F a h r e n h e i t S o a p R e s p o n s e ” />
</ o p e r a t i o n>
El´ ements de l’architecture
WSDL
<o p e r a t i o n name=” F a h r e n h e i t T o C e l c i u s ”>
<d o c u m e n t a t i o n>
C o n v e r t s a F a h r e n h e i t T e m p e r a t u r e t o a C e l c i u s v a l u e
</ d o c u m e n t a t i o n>
<i n p u t m e s s a g e=” t n s : F a h r e n h e i t T o C e l c i u s S o a p R e q u e s t ” />
<o u t p u t m e s s a g e=” t n s : F a h r e n h e i t T o C e l c i u s S o a p R e s p o n s e ” />
</ o p e r a t i o n>
<o p e r a t i o n name=” W i n d C h i l l I n C e l c i u s ”>
<d o c u m e n t a t i o n>
W i n d c h i l l t e m p e r a t u r e c a l c u l a t e d w i t h t h e f o r m u l a o f Steadman
</ d o c u m e n t a t i o n>
<i n p u t m e s s a g e=” t n s : W i n d C h i l l I n C e l c i u s S o a p R e q u e s t ” />
<o u t p u t m e s s a g e=” t n s : W i n d C h i l l I n C e l c i u s S o a p R e s p o n s e ” />
</ o p e r a t i o n>
<o p e r a t i o n name=” W i n d C h i l l I n F a h r e n h e i t ”>
<d o c u m e n t a t i o n>
W i n d c h i l l t e m p e r a t u r e c a l c u l a t e d w i t h t h e f o r m u l a o f Steadman
</ d o c u m e n t a t i o n>
<i n p u t m e s s a g e=” t n s : W i n d C h i l l I n F a h r e n h e i t S o a p R e q u e s t ” />
<o u t p u t m e s s a g e=” t n s : W i n d C h i l l I n F a h r e n h e i t S o a p R e s p o n s e ” />
</ o p e r a t i o n>
</ p o r t T y p e>
El´ ements de l’architecture
WSDL
<b i n d i n g name=” T e m p e r a t u r e C o n v e r s i o n s S o a p B i n d i n g ” t y p e=” t n s : T e m p e r a t u r e C o n v e r s i o n s S o a p T y p e ”>
<s o a p : b i n d i n g s t y l e =” document ” t r a n s p o r t=” h t t p : // s c h e m a s . x m l s o a p . o r g / s o a p / h t t p ” />
<o p e r a t i o n name=” C e l c i u s T o F a h r e n h e i t ”>
<s o a p : o p e r a t i o n s o a p A c t i o n=” ” s t y l e =” document ” />
<i n p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ i n p u t>
<o u t p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ o u t p u t>
</ o p e r a t i o n>
<o p e r a t i o n name=” F a h r e n h e i t T o C e l c i u s ”>
<s o a p : o p e r a t i o n s o a p A c t i o n=” ” s t y l e =” document ” />
<i n p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ i n p u t>
<o u t p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ o u t p u t>
</ o p e r a t i o n>
El´ ements de l’architecture
WSDL
<o p e r a t i o n name=” W i n d C h i l l I n C e l c i u s ”>
<s o a p : o p e r a t i o n s o a p A c t i o n=” ” s t y l e =” document ” />
<i n p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ i n p u t>
<o u t p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ o u t p u t>
</ o p e r a t i o n>
<o p e r a t i o n name=” W i n d C h i l l I n F a h r e n h e i t ”>
<s o a p : o p e r a t i o n s o a p A c t i o n=” ” s t y l e =” document ” />
<i n p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ i n p u t>
<o u t p u t>
<s o a p : b o d y u s e=” l i t e r a l ” />
</ o u t p u t>
</ o p e r a t i o n>
</ b i n d i n g>
<s e r v i c e name=” T e m p e r a t u r e C o n v e r s i o n s ”>
<d o c u m e n t a t i o n>
V i s u a l D a t a F l e x Web S e r v i c e t o c o n v e r t t e m p e r a t u r e v a l u e s b e t w e e n C e l c i u s and F a h r e n h e i t
</ d o c u m e n t a t i o n>
<p o r t name=” T e m p e r a t u r e C o n v e r s i o n s S o a p ” b i n d i n g=” t n s : T e m p e r a t u r e C o n v e r s i o n s S o a p B i n d i n g ”>
<s o a p : a d d r e s s l o c a t i o n=” h t t p : // w e b s e r v i c e s . d a e h o s t i n g . com/ s e r v i c e s / T e m p e r a t u r e C o n v e r s i o n s . wso ” />
</ p o r t>
</ s e r v i c e>