17
1 Les technologies XML Les technologies XML Cours 5 : Cours 5 : Les Web Services et WSDL Les Web Services et WSDL Mars 2011 Mars 2011 - Version 1.0 - - Version 1.0 -

1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

Embed Size (px)

Citation preview

Page 1: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

1

Les technologies XMLLes technologies XML

Cours 5 : Cours 5 : Les Web Services et WSDLLes Web Services et WSDL

Mars 2011 Mars 2011

- Version 1.0 - - Version 1.0 -

Page 2: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

2

Web Services – WSDL Web Services – WSDL

Comme on l’a vu avec XML RPC il est souvent difficile rien qu’à lecture d’un document XML :

De déterminer les paramètres à lui fournir

De connaître la structure du document en retour

De connaître les éventuels code erreur

D’anticiper les traitements effectués.

Pour remédier à cet état de fait il a été normaliser un langage: WSDL

Page 3: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

3

Web Services – WSDLWeb Services – WSDL

WSDL : Web Service Description Language WSDL : Web Service Description Language Langage Langage XML dédié à la description de tous les éléments XML dédié à la description de tous les éléments nécessaires pour interagir avec un service réseau (ou nécessaires pour interagir avec un service réseau (ou service web).service web).

W3C

WSDL 1 : http://www.w3.org/TR/wsdl

WSDL 2 : http://www.w3.org/TR/2007/REC-wsdl20-20070626/

WSDL 1 est prévu pour fonctionner avec SOAP 1.1

WSDL 2 est prévu pour fonctionner avec SOAP 1.2

Page 4: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

4

Web Services – WSDLWeb Services – WSDL

WSDL est un langage XML qui permet de décrire:WSDL est un langage XML qui permet de décrire:un service réseau (service Web),un service réseau (service Web),et comment l’ invoquer (localisation, paramètre, structure de et comment l’ invoquer (localisation, paramètre, structure de retour, ..)retour, ..)

Objectif :Objectif :Décrire les services comme un ensemble d’opérations et de Décrire les services comme un ensemble d’opérations et de messages abstraits reliés à des protocoles et des serveurs messages abstraits reliés à des protocoles et des serveurs réseauxréseauxCet objectif se rapproche d’IDL pour CORBA.Cet objectif se rapproche d’IDL pour CORBA.

WSDL standardise les schémas XML utilisés pour établir une WSDL standardise les schémas XML utilisés pour établir une connexion entre émetteurs et récepteurs. Par conséquent, il est connexion entre émetteurs et récepteurs. Par conséquent, il est possible d’automatiser certaines opérations nécessaires à l’appelpossible d’automatiser certaines opérations nécessaires à l’appel

Page 5: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

5

Web Services – WSDLWeb Services – WSDL

Un document WSDL est donc associé à un Web Un document WSDL est donc associé à un Web Service afin d’en décrire l’ensemble des Service afin d’en décrire l’ensemble des éléments qu’il expose vers le monde extérieur :éléments qu’il expose vers le monde extérieur :

types de données (XSD)types de données (XSD)

types de messagestypes de messages

liaisons avec le protocole de transport et le format des liaisons avec le protocole de transport et le format des messages (SOAP 1.X, HTTP Get et HTTP Post, ou encore messages (SOAP 1.X, HTTP Get et HTTP Post, ou encore MIME)MIME)

Les services sont vus comme des ensembles de ports Les services sont vus comme des ensembles de ports réseauxréseaux

Page 6: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

6

Web Services – WSDLWeb Services – WSDL

<types>Contient les définition de types utilisant un système de typage (comme XSD).

<message>Décrit les noms et types d’un ensemble de champs à transmettre (Paramêtres d’une invocation, valeur du retour, …)

<portType>Décrit un ensemble d’opérations. Chaque opération a zero ou un message en entrée, zero ou plusieurs message de sortie ou de fautes

<binding>Spécifie une liaison d’un <porttype> à un protocole concret (SOAP1.1, HTTP1.1, MIME, …). Un porttype peut avoir plusieurs liaisons !

<port>Spécifie un point d’entrée (endpoint) comme la combinaison d’un <binding> et d’une adresse réseau.

<service>Une collection de points d’entrée (endpoint) relatifs.

Page 7: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

7

Web Services – WSDLWeb Services – WSDL

L’élément <types> contient les définition de types utilisant un système de typage (comme XSD).

Exemple<types><xsd:schema

targetNamespace="http://exemple.com/personne.xsd"xmlns:xsd="http://www.w3.org/1999/XMLSchema">

<xsd:complexType name=“Personne”><xsd:complexType name=“Personne”><xsd:element name=“Nom” type=“xsd:string”><xsd:element name=“Prenom” type=“xsd:string”><xsd:element name=“Age” type=“xsd:float”>

</complexType></complexType></types>

Page 8: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

8

Web Services – WSDLWeb Services – WSDL

L’élément <message> décrit les noms et types d’un ensemble de champs à transmettre (Paramètres d’ invocation, valeur du retour, …)

Exemple

<message name="GetPersonne">

<part name="body" type="per:Personne"/>

</message>

<message name="AddPersonne"><part name="Nom" type="xsd:string"/><part name="Prenom" type="xsd:string"/><part name="Age" type="xsd:float"/>

</message>

Page 9: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

9

Web Services – WSDLWeb Services – WSDL

L’élément <portType> décrit un ensemble d’opérations.

Plusieurs types d’opérationsOne-way : Le point d’entrée reçoit un message (<input>).Request-response : Le point d’entrée reçoit un message (<input>) et retourne un message corrélé (<output>) ou un ou plusieurs messages d’erreur (<fault>).Solicit-response : Le point d’entrée envoie un message (<ouput>) et recoit un message corrélé (<input>) ou un ou plusieurs messages d’erreur (<fault>). Notification : Le point d’entrée envoie un message de notification (<ouput>)

ParamètresLes champs des messages constituent les paramètres (in,out, inout) des opérations

Page 10: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

10

Web Services – WSDLWeb Services – WSDL

Element <portType> exemple :Element <portType> exemple :

<portType name="CarnetAdresse"><portType name="CarnetAdresse">

<operation name="AddPersonne"><operation name="AddPersonne">

<input message="AddPersonneRequest"/><input message="AddPersonneRequest"/>

</operation></operation>

<operation name="GetPersonneParNom"><operation name="GetPersonneParNom">

<input<input message="GetPersonneParNom message="GetPersonneParNom Request"/>Request"/>

<output message=" GetPersonneParNom <output message=" GetPersonneParNom Response"/>Response"/>

</operation></operation>

</portType></portType>

Page 11: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

11

Web Services – WSDLWeb Services – WSDL

L’élément <binding> spécifie La liaison d’un <portType> à un protocole concret (SOAP1.1, HTTP GET/POST, MIME, …).

Un <portType> peut avoir plusieurs <binding> pour répondre à plusieurs protocoles.

La balise suivante : <soap:binding transport="uri" style="soap_style" /> précise que le binding est de type SOAP.

La balise <transport> définit le type de transport

http://schemas.xmlsoap.org/soap/http pour utiliser SOAP/HTTP

Page 12: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

12

Web Services – WSDLWeb Services – WSDL

La balise <style> définit la façon dont sont créer les messages SOAP de toutes les opérations

rpc : Encodage RPC défini par SOAP RPC

document : Encodage sous forme d’élément XML c’est ce mode qui est utilisé par défaut.

Pour chaque <operation> de <portType> :Pour chaque <operation> de <portType> :

il faut préciser l’URI de l’opération : <soapAction>il faut préciser l’URI de l’opération : <soapAction>

Il est aussi possible de repréciser la façon dont sont Il est aussi possible de repréciser la façon dont sont créés les messages SOAP : <style>créés les messages SOAP : <style>

Pour chaque message de chaque opération, il faut définir Pour chaque message de chaque opération, il faut définir comment sera créé le message SOAPcomment sera créé le message SOAP

Page 13: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

13

Web Services – WSDLWeb Services – WSDL

Exemple de binding sur SOAP et HTTP

<binding type="<binding type="CarnetAdresseCarnetAdresseBinding">Binding"><soap:binding <soap:binding

transport="http://schemas.xmlsoap.org/soap/http"transport="http://schemas.xmlsoap.org/soap/http"style="rpc" />style="rpc" />

<operation name="<operation name="GetPersonneParNomOpeGetPersonneParNomOpe">"><soap:operation soapAction="http://exemple.com/ <soap:operation soapAction="http://exemple.com/ GetPersonneParNomGetPersonneParNom " />" />

<input><input><soap:body use="encoded" <soap:body use="encoded"

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

</input></input> <output><output>

<soap:body use="encoded" <soap:body use="encoded"

encodingStyle="schemas.xmlsoap.org/soap/encoding"/>encodingStyle="schemas.xmlsoap.org/soap/encoding"/> </output></output>

</operation></operation></binding></binding>

Page 14: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

14

Web Services – WSDLWeb Services – WSDL

L’élément <port> est associé à un <portType>L’élément <port> est associé à un <portType>

Dans le cadre de SOAP, un élément <port> à Dans le cadre de SOAP, un élément <port> à une adresse (qui correspond à l’adresse http)une adresse (qui correspond à l’adresse http)

Exemple : Exemple : <port name="CarnetAdressePort" <port name="CarnetAdressePort" binding="per:CarnetAdressebinding="per:CarnetAdresseBindingBinding "> ">

<soap:address <soap:address location="http://example.com/GetPersonneParNlocation="http://example.com/GetPersonneParNom"/>om"/> </port></port>

Page 15: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

15

Web Services – WSDLWeb Services – WSDL

L’élément <service> définit l’ensemble des L’élément <service> définit l’ensemble des points d’entréespoints d’entrées

Exemple :Exemple :<<serviceservice name=“CarnetAdresseService"> name=“CarnetAdresseService">

<port name=" <port name=" CarnetAdressePortCarnetAdressePort " " binding="per:PersonnesBinding"> binding="per:PersonnesBinding">

<soap:address <soap:address location="http://example.com/GetPersonneParNom"/>location="http://example.com/GetPersonneParNom"/> </port></port>

<</service/service>>

Page 16: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

16

Web Services – WSDLWeb Services – WSDL

<?xml version="1.0" ?><definitions name="CarnetAdresse" targetNamespace="http://exemple.com/carnetAdresse.wsdl" xmlns:per="http://example.com/carnetAdresse.wsdl" <definitions name="CarnetAdresse" targetNamespace="http://exemple.com/carnetAdresse.wsdl" xmlns:per="http://example.com/carnetAdresse.wsdl"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types><xsd:schema targetNamespace="http://exemple.com/personne.xsd"xmlns:xsd="http://www.w3.org/1999/XMLSchema"><xsd:complexType name=“Personne”><xsd:complexType name=“Personne”>

<xsd:element name=“Nom” type=“xsd:string”><xsd:element name=“Prenom” type=“xsd:string”><xsd:element name=“Age” type=“xsd:float”>

</complexType></complexType></types><message name="GetPersonne">

<part name="body" type="Personne"/></message><message name="AddPersonne">

<part name="Nom" type="xsd:string"/><part name="Prenom" type="xsd:string"/><part name="Age" type="xsd:float"/>

</message><portType name="CarnetAdresse"><portType name="CarnetAdresse">

<operation name="AddPersonne"><operation name="AddPersonne"><input message="AddPersonneRequest"/><input message="AddPersonneRequest"/></operation></operation>

<operation name="GetPersonneParNom"><operation name="GetPersonneParNom"><input<input message="GetPersonneParNom Request"/>message="GetPersonneParNom Request"/><output message=" GetPersonneParNom Response"/><output message=" GetPersonneParNom Response"/></operation></operation>

</portType></portType>

Page 17: 1 Les technologies XML Cours 5 : Les Web Services et WSDL Mars 2011 - Version 1.0 -

17

Web Services – WSDLWeb Services – WSDL

<binding type="<binding type="CarnetAdresseCarnetAdresseBinding">Binding"><soap:binding <soap:binding

transport="http://schemas.xmlsoap.org/soap/http"transport="http://schemas.xmlsoap.org/soap/http"style="rpc" />style="rpc" />

<operation name="<operation name="GetPersonneParNomOpeGetPersonneParNomOpe">"><soap:operation soapAction="http://exemple.com/ <soap:operation soapAction="http://exemple.com/ GetPersonneParNomGetPersonneParNom " /> " />

<input><input><soap:body use="encoded" <soap:body use="encoded"

encodingStyle="schemas.xmlsoap.org/soap/encoding"/>encodingStyle="schemas.xmlsoap.org/soap/encoding"/> </input></input> <output><output>

<soap:body use="encoded" <soap:body use="encoded" encodingStyle="schemas.xmlsoap.org/soap/encoding"/>encodingStyle="schemas.xmlsoap.org/soap/encoding"/>

</output></output></operation></operation>

</binding></binding><service name=“CarnetAdresseService"><service name=“CarnetAdresseService">

<port name=" CarnetAdressePort " binding="per:PersonnesBinding"> <port name=" CarnetAdressePort " binding="per:PersonnesBinding"> <soap:address location="http://example.com/GetPersonneParNom"/><soap:address location="http://example.com/GetPersonneParNom"/>

</port></port></service></service>

</definitions>