Les services Web

Web Services and Technology · notes

Voir tous les documents en développement web

10/8/2017

Les services Web

Sign up

Sign in [

Home

Course

Les services Web

Les services Web

*

D

O Easy

License

T

Log in or subscribe to enjoy all this course has to oer!

T

Start the course

How does it work?

Bienvenue toutes et tous ! :)

Voici un article concernant les services Web... Oui, j'ai bien dit s e r v i c e s W e b !

Vous ne savez pas ce que c'est ? Ou vous avez d j entendu parler, mais vous n'avez jamais song en savoir plus leur sujet ?

Cet article est fait pour vous ! la fin de la lecture compl te, vous d couvrirez comment de grandes entreprises comme eBay,

PriceMinister, Amazon, Pixmania ou encore le terrible Google, se sont d velopp es gr ce aux services Web !

Ainsi, nous allons essayer dans cet article de d crire les aspects techniques, technologiques et fonctionnels des services Web. ;)

Qu'est-ce qu'un service Web ?

La technologie des services Web est un moyen rapide de distribution de l'information entre clients, fournisseurs, partenaires

commerciaux et leurs di rentes plates-formes. Les services Web sont bas s sur le mod le SOA .

D'autres technologies telles que RMI, DCOM et CORBA ont pr c demment adopt ce style architectural mais ont g n ralement

chou en raison de la diversit des plates-formes utilis es dans les organisations et aussi parce que leur usage n' tait pas adapt

Internet (probl me de passage travers des FireWalls, etc.) d'o la lenteur, voire l'absence de r ponses sur ce r seau. Les

applications r parties fond es sur ces technologies orent des solutions caract ris es par un couplage fort entre les objets. Les

solutions propos es par les services Web, permettent n anmoins un couplage moins fort. De plus, l'utilisation des technologies

standards du Web telles HTTP et XML par les services Web facilite le d veloppement d'applications r parties sur Internet, et permet

d'avoir des applications tr s faiblement coupl es. L'int gration est sans doute le facteur essentiel qui favorise l'utilisation des

services Web.

On retrouve plusieurs d finitions des services Web :

Citation : W3C

Un service Web est un composant logiciel identifi par une URI, dont les interfaces publiques sont d finies et appel es en

XML. Sa d finition peut tre d couverte par d'autres syst mes logiciels. Les services Web peuvent interagir entre eux d'une

https://openclassrooms.com/courses/les-services-web

1/23

3

10/8/2017

Les services Web

mani re prescrite par leurs d finitions, en utilisant des messages XML port s par les protocoles Internet.

Citation : Dico du Net

Une technologie permettant des applications de dialoguer distance via Internet ind pendamment des plates-formes et

des langages sur lesquels elles reposent.

Citation : Wikip dia

Un service Web est un programme informatique permettant la communication et l' change de donn es entre applications et

syst mes h t rog nes dans des environnements distribu s. Il s'agit donc d'un ensemble de fonctionnalit s expos es sur

internet ou sur un intranet, par et pour des applications ou machines, sans intervention humaine, et en temps r el.

En d'autres termes, un service Web est tout simplement un programme accessible au moyen d'Internet, qui utilise un syst me de

messagerie standard XML, et n'est li aucun syst me d'exploitation ou langage de programmation !

En reprenant la d finition du consortium W3C, voici les principaux avantages d'un service Web, savoir :

son interface d crite d'une mani re interpr table par les machines, qui permet aux applications clientes d'acc der aux

services de mani re automatique ;

son utilisation de langages et protocoles ind pendants des plates-formes d'implantation, qui renforcent l'interop rabilit

entre services ;

son utilisation des normes actuelles du Web, qui permettent la r alisation des interactions faiblement coupl es et favorisent

aussi l'interop rabilit .

L'int r t d'un Service Web

Les services Web fournissent un lien entre applications. Ainsi, des applications utilisant des technologies di rentes peuvent

envoyer et recevoir des donn es au travers de protocoles compr hensibles par tout le monde. ;)

Les services Web sont normalis s car ils utilisent les standards XML et HTTP pour transf rer des donn es et ils sont compatibles

avec de nombreux autres environnements de d veloppement. Ils sont donc ind pendants des plates-formes. C'est dans ce contexte

qu'un int r t tr s particulier a t attribu la conception des services Web puisqu'ils permettent aux entreprises d'orir des

applications accessibles distance par d'autres entreprises. Cela s'explique par le fait que les services Web n'imposent pas de

mod les de programmation sp cifiques. En d'autres termes, les services Web ne sont pas concern s par la fa on dont les messages

sont produits ou consomm s par des programmes. Cela permet aux vendeurs d'outils de d veloppement d'orir di rentes

m thodes et interfaces de programmation au-dessus de n'importe quel langage de programmation, sans tre contraints par des

standards comme c'est le cas de la plate-forme CORBA qui d finit des ponts sp cifiques entre le langage de d finition IDl et

di rents langages de programmation. Ainsi, les fournisseurs d'outils de d veloppement peuvent facilement di rencier leurs

produits avec ceux de leurs concurrents en orant di rents niveaux de sophistication.

Les services Web repr sentent donc la fa on la plus eicace de partager des m thodes et des fonctionnalit s. De plus, ils r duisent

le temps de r alisation en permettant de tirer directement parti de services existants.

Les caract ristiques d'un service Web

La technologie des services Web repose essentiellement sur une repr sentation standard des donn es (interfaces, messageries) au

moyen du langage XML. Cette technologie est devenue la base de l'informatique distribu e sur Internet et ore beaucoup

d'opportunit s au d veloppeur Web. :)

Un service Web poss de les caract ristiques suivantes :

il est accessible via le r seau ;

il dispose d'une interface publique (ensemble d'op rations) d crite en XML ;

https://openclassrooms.com/courses/les-services-web

2/23

10/8/2017

Les services Web

ses descriptions (fonctionnalit s, comment l'invoquer et o le trouver ?) sont stock es dans un annuaire ;

il communique en utilisant des messages XML, ces messages sont transport s par des protocoles Internet (g n ralement

HTTP, mais rien n'emp che d'utiliser d'autres protocoles de transfert tels : SMTP, FTP, BEEP... ) ;

l'int gration d'application en impl mentant des services Web produit des syst mes faiblement coupl s, le demandeur du

service ne conna t pas forc ment le fournisseur.

Ce dernier peut dispara tre sans perturber l'application cliente qui trouvera un autre fournisseur en cherchant dans

l'annuaire.

Architecture d'un service Web

Les services Web reprennent la plupart des id es et des principes du Web (HTTP, XML), et les appliquent des interactions entre

machines. Comme pour le World Wide Web, les services Web communiquent via un ensemble de technologies fondamentales qui

partagent une architecture commune. Ils ont t con us pour tre r alis s sur de nombreux syst mes d velopp s et d ploy s de

fa on ind pendante. Les technologies utilis es par les services Web sont HTTP, WSDL, REST, XML-RPC, SOAP et UDDI.

REST

REST (Representational State Transfer) est une architecture de services Web. labor e en l'an 2000 par Roy Fiedling, l'un des

cr ateurs du protocole HTTP, du serveur Apache HTTPd et d'autres travaux fondamentaux, REST est une mani re de construire une

application pour les syst mes distribu s comme le World Wide Web.

XML-RPC

XML-RPC est un protocole simple utilisant XML pour eectuer des messages RPC. Les requ tes sont crites en XML et envoy es via

HTTP POST. Les requ tes sont int gr es dans le corps de la r ponse HTTP. XML-RPC est ind pendant de la plate-forme, ce qui lui

permet de communiquer avec diverses applications. Par exemple, un client Java peut parler de XML-RPC un PerlServer ! o_O

SOAP

SOAP (Simple object Access Protocol) est un protocole standard de communication. C'est l' pine dorsale du syst me

d'interop rabilit . SOAP est un protocole d crit en XML et standardis par le W3C. Il se pr sente comme une enveloppe pouvant

tre sign e et pouvant contenir des donn es ou des pi ces jointes.

Il circule sur le protocole HTTP et permet d'eectuer des appels de m thodes distance.

Publicité

WSDL

WSDL (Web Services Description Language) est un langage de description standard. C'est l'interface pr sent e aux utilisateurs. Il

indique comment utiliser le service Web et comment interagir avec lui. WSDL est bas sur XML et permet de d crire de fa on pr cise

les d tails concernant le service Web tels que les protocoles, les ports utilis s, les op rations pouvant tre eectu es, les formats

des messages d'entr e et de sortie et les exceptions pouvant tre envoy es.

UDDI

UDDI (Universal Description, Discovery and Integration) est un annuaire de services. Il fournit l'infrastructure de base pour la

publication et la d couverte des services Web. UDDI permet aux fournisseurs de pr senter leurs services Web aux clients.

Les informations qu'il contient peuvent tre s par es en trois types :

les pages blanches qui incluent l'adresse, le contact et les identifiants relatifs au service Web ;

les pages jaunes qui identifient les secteurs d'aaires relatifs au service Web ;

les pages vertes qui donnent les informations techniques.

Nous allons tudier plus en d tail, ces trois derni res technologies. ;)

https://openclassrooms.com/courses/les-services-web

3/23

10/8/2017

Les services Web

Fonctionnement des services Web

Le fonctionnement des services Web s'articule autour de trois acteurs principaux illustr s par le sch ma suivant :

D cortiquons ce sch ma. :)

Service provider service

Le fournisseur de service met en application le service Web et le rend disponible sur Internet.

Service requester programme client

C'est n'importe quel consommateur du service Web. Le demandeur utilise un service Web existant en ouvrant une connexion r seau

et en envoyant une demande en XML (REST, XML-RPC, SOAP).

Annuaire service registry

Le registre de service est un annuaire de services. Le registre fournit un endroit central o les programmeurs peuvent publier de

nouveaux services ou en trouver. Les interactions entre ces trois acteurs suivent plusieurs tapes :

La publication du service : le fournisseur diuse les descriptions de ses services Web dans l'annuaire.

La recherche du service : le client cherche un service particulier, il s'adresse un annuaire qui va lui fournir les descriptions

et les URL des services demand s afin de lui permettre de les invoquer.

L'invocation du service : une fois que le client r cup re l'URL et la description du service, il les utilise pour l'invoquer aupr s

du fournisseur de services.

Description en couche des services Web

Les services Web emploient un ensemble de technologies qui ont t con ues afin de respecter une structure en couches sans tre

d pendante de fa on excessive de la pile des protocoles. Cette structure est form e de quatre couches majeures :

D couverte de services UDDI

Description de services WSDL

Communication

Transport

SOAP

HTTP

Couches technologiques des services Web.

https://openclassrooms.com/courses/les-services-web

4/23

10/8/2017

Les services Web

Le transport de messages XML-RPC ou SOAP est assur par le standard HTTP.

SOAP ou XML-RPC pr voit la couche de communication bas e sur XML pour acc der des services Web.

La description d'un service Web se fait en utilisant le langage WSDL. WSDL expose l'interface du service.

La publication et la d couverte des services Web sont assur es par le biais du r f rentiel UDDI. Un r f rentiel UDDI est un

catalogue de services Web.

Couche transport

Cette couche est responsable du transport des messages XML chang s entre les applications. Actuellement, cette couche inclut

HTTP, SMTP, FTP, et de nouveaux protocoles tels que BEEP.

Couche communication

Cette couche est responsable du formatage des donn es chang es de sorte que les messages peuvent tre compris chaque

extr mit . Actuellement, deux styles architecturaux totalement di rents sont utilis s pour ces changes de donn es. Nous avons

d'un c t l'architecture orient e op rations distribu es (protocoles RPC) bas e sur XML et qui comprend XML-RPC et SOAP et de

l'autre c t une architecture orient e ressources Web, REST (Representational State Transfer) qui se base uniquement sur le bon

usage des principes du Web (en particulier, le protocole HTTP).

Couche description de service

Cette couche est responsable de la description de l'interface publique du service Web. Le langage utilis pour d crire un service

Web est WSDL qui est la notation standard bas e sur XML pour construire la description de l'interface d'un service. Cette

sp cification d finit une grammaire XML pour d crire les services Web comme des ensembles de points finaux de communication

(ports) travers lesquels on eectue l' change de messages.

Couche d couverte de service

Cette couche est charg e de centraliser les services dans un registre commun, et de simplifier les fonctionnalit s de recherche et de

publication des services Web. Actuellement, la d couverte des services est assur e par un annuaire UDDI (Universal Description,

Discovery, and Integration).

Le protocole de communication SOAP

Nous avons propos une d finition de trois architectures : SOAP, son anc tre XML-RPC et REST. Nous verrons celle de SOAP plus en

d tail, car elle est de nos jours la plus impl ment e. ;)

La d finition de SOAP ne se r sume pas trois lignes !

SOAP est un protocole d'invocation de m thodes sur des services distants. Bas sur XML, SOAP a pour principal objectif d'assurer

la communication entre machines. Le protocole permet d'appeler une m thode RPC et d'envoyer des messages aux machines

distantes via HTTP. Ce protocole est tr s bien adapt l'utilisation des services Web, car il permet de fournir au client une grande

quantit d'informations r cup r es sur un r seau de serveurs tiers, voyez :

https://openclassrooms.com/courses/les-services-web

5/23

10/8/2017

Les services Web

SOAP est bien plus populaire et utilis que XML-RPC. C'est une recommandation du W3C. D'apr s cette recommandation, SOAP est

destin tre un protocole l ger dont le but est d' changer des informations structur es dans un environnement d centralis et

distribu . Une des volont s du W3C vis- -vis de SOAP est de ne pas r inventer une nouvelle technologie. SOAP a t construit pour

pouvoir tre ais ment port sur toutes les plates-formes et les technologies existantes. ^^

Qu'est-ce que le SOAP ?

Beaucoup de d finitions normalis es de SOAP ont t propos es. Une particuli rement int ressante d finit SOAP comme tant une

sp cification pour une omnipr sence, bas e sur XML et sur des infrastructures distribu es.

o_O On n'a rien pig ! Tu pourrais nous expliquer ? :euh:

Rassurez-vous, je n'allais pas vous laisser avec cette d finition vaste . D cortiquons la. ;)

Sp cification car SOAP est un document qui d finit le mod le de communication. L'id e de base est que si les deux parties

ont cr des programmes de m mes sp cifications, ils seront en mesure d'interagir de fa on transparente.

Omnipr sente car SOAP est d fini un niveau suisamment lev d'abstractions que tout syst me d'exploitation et

combinaison de langages de programmation peuvent tre utilis s pour cr er des programmes compatibles SOAP.

Bas sur XML, SOAP est construit sur XML, ce qui signifie que les documents SOAP sont des documents XML construits en

fonction d'un cahier de charges plus strict.

Infrastructure distribu e, SOAP ne pr cise pas quelles donn es peuvent tre d plac es ou bien quels appels de fonctions

peuvent avoir lieu sur elle. Les applications construites sur la sp cification SOAP peuvent d placer les donn es d'un

ordinateur A un ordinateur B et par la suite une autre application crite sur la m me sp cification.

Structure d'un message SOAP

La grammaire de SOAP est assez simple comprendre. Elle procure un moyen d'acc s aux objets par appel de m thodes distance.

Les deux plus fortes fonctionnalit s de SOAP sont sa simplicit et le fait que tout le monde a accept de l'utiliser. Un message SOAP

est compos de deux parties obligatoires : l'enveloppe SOAP et le corps SOAP ; et une partie optionnelle : l'en-t te SOAP.

https://openclassrooms.com/courses/les-services-web

6/23

10/8/2017

Les services Web

SOAP envelope (enveloppe) est l' l ment de base du message SOAP. L'enveloppe contient la sp cification des espaces de

d signation (namespace) et du codage de donn es.

SOAP header (ent te) est une partie facultative qui permet d'ajouter des fonctionnalit s un message SOAP de mani re

d centralis e sans agr ment entre les parties qui communiquent. C'est ici qu'il est indiqu si le message est mandataire ou

Publicité

optionnel. L'ent te est utile surtout, quand le message doit tre trait par plusieurs interm diaires.

SOAP body (corps) est un container pour les informations mandataires l'intention du r cepteur du message, il contient les

m thodes et les param tres qui seront ex cut s par le destinataire final.

SOAP fault (erreur) est un l ment facultatif d fini dans le corps SOAP et qui est utilis pour reporter les erreurs.

L'enveloppe SOAP

L'enveloppe SOAP sert de conteneur aux autres l ments du message SOAP, elle est d finie au d but par la balise <soap:Envelope>

et se termine par la balise </soap:Envelope>. Les messages SOAP ne peuvent pas tre envoy s en lots, autrement dit l'enveloppe

contient un seul message constitu d'un ent te facultatif (SOAP header) et d'un corps obligatoire (SOAP body).

xml

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding">

<soap:Header>

<!-- en-t te -->

</soap:Header>

<soap:Body>

<!-- corps -->

</soap:Body>

</soap:Envelope>

Toutes les balises XML associ es SOAP ont le pr fixe soap (on trouve des d veloppeurs utilisant "soap-env"). L'ent te est

<soap:Header> et le corps <soap:Body>.

SOAP repose enti rement sur les espaces de noms XML. Dans cet exemple, les espaces de noms sont introduits l'aide d'un mot-cl

xmlns XML namespace qui signifie espace de noms XML. L'espace de noms est utilis pour identifier toutes les balises afin

d' viter les conflits. La sp cification impose que tous les attributs contenus dans l'enveloppe SOAP soient explicitement associ s

un namespace, de mani re supprimer toute ambigu t . Par convention, la sp cification SOAP d finit deux namespaces

fr quemment utilis s :

https://openclassrooms.com/courses/les-services-web

7/23

10/8/2017

Les services Web

soap-env ou soap associ l'URI [..]schemas.xmlsoap.org/soap/envelope pour d finir le namespace de l'enveloppe dans

la version 1.1, et [..]wwww.w3.org/2001/06/soap-envelope dans la version 1.2 reprise par le W3C.

soap-enc:encodingStyle associ l'URI [..]schemas.xmlsoap.org/soap/encoding pour la d finition des formats de types de

donn es dans la version 1.1, et [..]www.w3.org/2001/06/soap-encoding dans la version 1.2.

Deux autres espaces de noms fortement utilis s dans SOAP sont xsd et xsi .

xsd namespace pr cise que les balises proviennent de la d finition de sch ma XML.

xsi namespace indique que les balises viennent d'une instance d'un sch ma XML.

Le corps SOAP

Le corps SOAP est un l ment obligatoire dans le message SOAP. Il contient l'information destin e au receveur. Le corps (body) doit

fournir le nom de la m thode invoqu e par une requ te ainsi que les param tres associ s a celle-ci.

Le contenu du corps SOAP est utilis pour sp cifier un appel de m thode un ordinateur distant avec les valeurs de param tre. Par

exemple, la demande du solde d'un compte bancaire.

L'extrait suivant repr sente un corps SOAP qui fait appel de proc dure distante (RPC) une m thode appel e

checkAccountBalance().

xml

<soap:Body>

<checkAccountBalance>

<accountNumber xsi: type="xsd:int">1234567890</accountNumber>

</checkAccountBalance>

</soap:Body>

Le corps du message SOAP commence avec la balise <soap:Body> et se termine avec la balise </soap:Body>.

L' l ment <checkAccountBalance> fournit le nom de la m thode appeler : checkAccountBalance. L' l ment accountNumber est

un param tre qui est pass dans la m thode checkAccountBalance.

Les attributs xsi et xsd d finissent les espaces de noms qui vont tre utilis s dans le corps du message. La d finition de xsi permet

d'utiliser xsi:type dans le corps du message, le xsd:int signifie que cette valeur est de type entier. 1234567890 est la valeur donn e

au param tre.

L'ensemble de ces caract res repr sente un appel de m thode qui a la forme suivante en langage C :

c

int Balance = checkAccountBalance(1234567890);

Une di rence importante entre SOAP et XML-RPC est que les m thodes SOAP prennent des param tres nomm s. L'ordre des

param tres, lui, n'a pas d'importance, contrairement XML-RPC.

L'en-t te SOAP

L'en-t te SOAP est un l ment facultatif dans un message SOAP. Toutefois, si un en-t te est pr sent, il doit tre le premier l ment

qui appara t dans l'enveloppe SOAP. Le format de l'en-t te n'est pas d fini dans le cahier des charges et par cons quent, il est la

disposition des clients et des services pour leur propre usage. Cet usage typique serait de communiquer des informations

authentifiant l' metteur ou bien encore le contexte d'une transaction dont le message SOAP doit passer par plusieurs

interm diaires SOAP pour arriver au destinataire final. Un interm diaire SOAP est toute entit capable de recevoir et transmettre

des messages SOAP.

L'en-t te d'un message SOAP commence avec la balise <soap:Header> et se termine avec la balise </soap:Header>, je vous rappelle

qu'on peut aussi faire <sopa-env:Header></sopa-env:Header>.

https://openclassrooms.com/courses/les-services-web

8/23

10/8/2017

Les services Web

Trois attributs associ s l'en-t te SOAP peuvent tre utilis s :

soap:mustUnderstand : cet attribut prend la valeur 1 ou 0. La valeur 1 signale que le r cepteur doit reconna tre l'information

pr sente dans l'en-t te et que son traitement est obligatoire. La valeur 0 indique que l'en-t te peut tre ignor par le

r cepteur.

soap:role : sert indiquer le destinataire SOAP auquel un bloc d'en-t te SOAP particulier est destin .

soap:relay : est utilis pour indiquer si un bloc d'en-t te SOAP cibl sur un r cepteur SOAP doit tre r achemin (relay ) s'il

n'est pas trait .

<soap:role> et <soap:relay> sont utilis s conjointement par l'ensemble des nSuds SOAP interm diaires qu'un message SOAP doit

traverser pour arriver au destinataire final.

xml

Exemple de Bloc Header, Message destination de Plusieurs Noeud SOAP

<!--

l ment USER : destination du nSud RightManager

-->

<soap:Header>

<m:User xmlns:m="http://www.monsite.com/rights/"

soap:actor="http://www.monsite.com/rights/RightsManager">

Thunderseb

</m:User>

<!--

l ment Session : destination du nSud final

-->

<m:Session xmlns:m="http://www.monsite.com/session/"

soap:mustUnderstand="1">

12AE3C

</m:Session>

<!--

l ment USER : destination du prochain nSud

-->

<m:Lang xmlns:m="http://www.monsite.com/lang/"

soap:actor="http://schemas.xmlsoap.org/soap/next" soap:mustUnderstand="0"> FR

</m:Lang>

</soap:Header>

Si vous avez bien suivi, vous ne devriez pas avoir de probl mes comprendre cet exemple. ;)

Message d'erreur SOAP

Afin de r cup rer le plus grand nombre d'erreurs, l'approche SOAP se base essentiellement sur le bon usage de la balise

<soap:fault> qui est contenue dans le corps SOAP. Cette balise est utilis e pour communiquer un probl me qui a eu lieu dans la

tentative de r alisation de la demande adress e au service Web. L' l ment d'erreur est facultatif et figure uniquement dans les

Publicité

messages de r ponse, il ne peut y appara tre qu'une seule fois. La balise <soap:fault> peut contenir quatre autres balises

facultatives :

https://openclassrooms.com/courses/les-services-web

9/23

10/8/2017

Les services Web

faultcode : cet l ment est requis par le cahier des charges. Il contient un code indiquant la nature du probl me.

faultstring : est la version lisible par l'homme de la balise faultcode. C'est la traduction en langage naturel du code d'erreur.

faultactor : indique le service qui a g n r l'erreur. Cela est important lorsqu'une cha ne de services a t utilis e pour traiter

la demande.

detail : cet l ment doit contenir autant d'informations que possible sur l' tat du serveur l'instant de l'apparition de

l'erreur. Il contient souvent des valeurs de variables au moment de l' chec.

Quatre types de codes d'erreur sont d finis par la sp cification :

soap:Server : indique qu'une erreur s'est produite sur le serveur, mais pas avec le message lui-m me.

soap:Client : signifie que le message re u contient une erreur.

soap:VersionMismatch : cette erreur se produit lorsque les versions des protocoles SOAP utilis s par le client et le serveur

sont di rentes.

soap:MustUnderstand : cette erreur est g n r e lorsqu'un l ment dans l'en-t te ne peut pas traiter alors qu'il est marqu

comme obligatoire.

xml

Exemple : Bloc Fault

<soap:Body>

<soap:Fault>

<!--

Identifiant de l'erreur ? d fini par SOAP

-->

<faultcode>soap:Server</faultcode>

<!--

Description br ve du message

-->

<faultstring>Impossible de router le message.</faultstring>

<!--

Composant qui a g n r l'erreur (URL).

-->

<faultactor>http://www.monsite.com/messageDispatcher</faultactor>

<!--

Message sp cifique l'application

-->

<detail>

<m:error xmlns:m="http://www.monsite.com/errors"> E_NO_ROUTE </m:error>

</detail>

</soap:Fault>

</soap:Body>

Ici encore, il suit de bien lire les d finitions pour comprendre ce code. ^^

https://openclassrooms.com/courses/les-services-web

10/23

10/8/2017

Les services Web

Exemple de communication

Pour finir avec SOAP, voici un exemple de communication, ne me le faites pas redire une troisi me fois ! Lisez bien les d finitions

pr c dentes. :diable:

Requ te sur un service Web .net

xml

xml

<!--

Protocole de transport ex. HTTP

-->

POST /stockquote.asmx HTTP/1.1

Host: www.webservicex.net Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://www.webserviceX.NET/GetQuote"

<?xml version="1.0" encoding="utf-8"?>

<!--

D finit le document XML comme un message SOAP.

-->

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<!--

Contenant des donn es transporter.

-->

<soap:Body>

<GetQuote xmlns="http://www.webserviceX.NET/">

<symbol>string</symbol>

</GetQuote>

</soap:Body>

</soap:Envelope>

R ponse

<StockQuotes>

<Stock>

<Symbol>Pegeot</Symbol>

<Last>2.28</Last>

<Date>20/11/2009</Date>

<Time>4:00pm</Time>

<Change>+0.20</Change>

<Open>2.20</Open>

<High>2.30</High>

<Low>2.07</Low>

<Volume>124718</Volume>

https://openclassrooms.com/courses/les-services-web

11/23

10/8/2017

Les services Web

<MktCap>18.0M</MktCap>

<PreviousClose>2.08</PreviousClose>

<PercentageChange>+9.62%</PercentageChange>

<AnnRange>1.51 - 3.27</AnnRange>

<Earns>-0.174</Earns>

<P-E>N/A</P-E>

<Name>Forward Industrie</Name>

</Stock>

</StockQuotes>

Appel du service Web stockquote en PHP, par exemple

<?php

$params['symbol']="Pegeot";

/*

Cr ation d'un objet SOAPCLIENT.

html+php

L'ouverture du fichier WSDL va permettre d'automatiser l'utilisation du <italique>Web Service</italique>.

Les m thodes d finies dans le WSDL seront vues comme des m thodes internes.

*/

$client = new SoapClient("http://www.webservicex.net/stockquote.asmx?wsdl");

Publicité

/*

Appel de la m thode GETQUOTE du WS STOCKQUOTE vue comme une m thode locale.

*/

$result = $client->GetQuote($params);

$ResultQuote = $result->GetQuoteResult;

echo $ResultQuote;

?>

Impl mentation de SOAP

Comme je l'ai r p t tout le long de cet article, les services Web ne se limitent pas un langage en particulier ou un syst me

d'exploitation pr cis, voici quelques langages avec l'impl mentation de SOAP :

JAVA (API et outils associ s)

  • JAX-RPC (Java XML ? based RPC) : utilisation de SOAP en mode RPC.
  • JAXR (JA XML Registries) : utilisation de UDDI.
  • JAXM (JA XML Messaging) : utilisation de SOAP en mode message.

Microso (technologie .NET)

  • API dans la biblioth que de classes .NET.

Classes PHP SOAP : divers projets open source.

Perl : SOAP::Lite, UDDI::Lite, XMLRPC::Lite.

etc.

Le langage de description WSDL

Un document WSDL se compose d'un ensemble d' l ments d crivant les types de donn es utilis s par le service, les messages que

le service peut recevoir, ainsi que les liaisons SOAP associ es chaque message. Le sch ma suivant illustre la structure du langage

WSDL qui est un document XML, en d crivant les relations entre les sections constituant un document WSDL.

https://openclassrooms.com/courses/les-services-web

12/23

10/8/2017

Les services Web

Un fichier WSDL contient donc sept l ments.

Types : fournit la d finition de types de donn es utilis s pour d crire les messages chang s.

Messages : repr sente une d finition abstraire (noms et types) des donn es en cours de transmission.

PortTypes : d crit un ensemble d'op rations. Chaque op ration a z ro ou un message en entr e, z ro ou plusieurs messages

de sortie ou d'erreurs.

Binding : sp cifie une liaison entre un <portType> et un protocole concret (SOAP, HTTP...).

Service : indique les adresses de port de chaque liaison.

Port : repr sente un point d'acc s de services d fini par une adresse r seau et une liaison.

Op ration : c'est la description d'une action expos e dans le port.

Le document WSDL peut tre divis en deux parties. Une partie pour les d finitions abstraites, tandis que la deuxi me contient les

descriptions concr tes.

La description concr te est compos e des l ments qui sont orient s vers le client pour le service physique. Les trois l ments

concrets XML pr sents dans un WSDL sont :

<wsdl:service> ;

<wsdl:port> ;

<wsdl:binding> .

La description abstraite est compos e des l ments qui sont orient s vers la description des capacit s du service Web. Ses

l ments abstraits d finissent les messages SOAP de fa on totalement ind pendante de la plate-forme et de la langue. Cela facilite

la d finition d'un ensemble de services pouvant tre impl ment s par di rents sites Web. Les quatre l ments abstraits XML qui

peuvent tre d finis dans un WSDL sont :

<wsdl:types> ;

<wsdl:message> ;

https://openclassrooms.com/courses/les-services-web

13/23

10/8/2017

Les services Web

<wsdl:operation> ;

<wsdl:portType> .

L' l ment types

L' l ment <types> d crit tous les types de donn es utilis s entre le client et le serveur. Ces types sont l' quivalent en structures C++

ou Java des classes qui ne contiennent que des donn es et pas de m thodes.

WSDL n'est pas li e exclusivement un syst me de typage, mais il utilise le XML sch ma de la sp cification W3C :

<wsdl:types>

<xsd:schema targetNamespace = "http://www.stevepotts.com/customer.xsd"

xmlns: xsd = "http://www.w3.org/2001/XMLSchema">

<xsd:element name ="customer">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="customer ID" type="xsd:string" ></xsd:element>

<xsd:element name="lastname" type="xsd:string" ></xsd:element>

<xsd:element name="firstname" type="xsd:string" ></xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

</wsdl:type>

L' l ment message

L' l ment <message> comprend la section Messages. Si nous envisageons les op rations comme des fonctions, alors un l ment

<message> d finit les param tres pour cette fonction. L'exemple suivant repr sente les messages correspondant l'ajout d'un

nouveau client un service Web.

xml

xml

<wsdl:message name="addCustomer">

<wsdl:part name="customerInfo" element="tns:customer"></wsdl:part>

</wsdl:message>

<wsdl:message name="confirmationResponse">

<wsdl:part name="response" element="xsd:integer"></wsdl:part>

</wsdl:message>

Chaque l ment enfant <part> de l' l ment <message> correspond un param tre et poss de un attribut de nom et de type, tout

comme un param tre de fonction a un nom et un type. Les param tres d'entr e sont d finis dans un l ment <message> unique et

s par des param tres de sortie, qui se trouvent dans leur propre l ment <message>. Le message addCustomer va ajouter un

nouveau client (customer) au service Web par l'envoi d'une instance de l' l ment client que nous avons d fini dans l' l ment

<type>.

Le nom d'un l ment <message> de sortie se termine par Response. Dans cet exemple, le message de r ponse est

confirmationResponse, il renvoie au client un nombre entier lui indiquant le succ s de l'op ration.

L' l ment op ration

L' l ment <operation> est analogue un appel de m thode en Java ou d'une sous-routine dans Visual Basic. La di rence est que

seulement trois messages sont autoris s dans une op ration :

https://openclassrooms.com/courses/les-services-web

14/23

10/8/2017

Les services Web

Input Message : d finit les donn es que le service Web s'attend recevoir.

OutPut Message : d finit les donn es que le service Web pr voit d'envoyer en r ponse.

Fault Message : d finit les messages d'erreurs qui peuvent tre retourn s par le service Web.

Plusieurs types d'op ration peuvent tre d clar s dans un document WSDL :

Request/Response : le client envoie la demande, et le service r pond.

Solicit/Response : un service Web envoie un message au client, et le client r pond.

One-way : un client envoie un message au service Web, mais ne s'attend aucune r ponse.

Notification : un service Web envoie un message au client, mais n'attend pas de r ponse.

L' l ment portType

Un port est simplement une suite d'op rations. De nombreux langages de programmation appellent cela une biblioth que, un

module ou une classe, mais dans le monde de l' change de messages, les points de connexion sont des ports, et la d finition

abstraite d'un port est appel e <portType>.

<...