Professional Documents
Culture Documents
Licence
Creative Commons
Contrat Paternit Partage des Conditions Initiales l'Identique
2.0 France
keulkeul.blogspot.com
http://creativecommons.org/licenses/by-sa/2.0/fr
WSDL - M. Baron - Page 2
Plan du cours
Gnralits WSDL WSDL par lexemple : HelloWorld service Organisation dun document WSDL Elment Type Elment Message Elments PortType et Operation
keulkeul.blogspot.com
Elment Binding Binding SOAP Elments Service et Port Binding HTTP GET & Post
WSDL - M. Baron - Page 3
Logiciels utiliss
Navigateur Web
Pr-requis
keulkeul.blogspot.com
Remerciements
TODO
WSDL - M. Baron - Page 4
Cours
keulkeul.blogspot.com
Gnralits WSDL WSDL est lacronyme de Web Service Description Language Bas sur le langage XML et permet de dcrire un service Web Fournit une description indpendante du langage et de la plate-forme Par comparaison WSDL est assez semblable au langage IDL dfini par CORBA Spcification du W3C
WSDL 1.1 : http://www.w3.org/TR/wsdl
keulkeul.blogspot.com
ebaY
http://developer.ebay.com http://developer.ebay.com/webservices/finding/latest/FindingService.wsdl
http://www.nws.noaa.gov/xml/ http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl
WebserviceX.NET
http://www.webservicex.net http://www.webservicex.net/convertMetricWeight.asmx?wsdl http://www.webservicex.net/GenericNAICS.asmx?wsdl
Entreprise A interroge lannuaire UDDI pour obtenir une liste de Services Web rpondant ces exigences
2 3
1
Entreprise A tlcharge les documents qui dcrivent les Services Web (WSDL)
Entreprise B publie ses Services Web quelle implmente dans un annuaire UDDI (transmet les WSDLs)
Entreprise A envoie des messages SOAP conformes aux WSDL pour invoquer les Services Web de B
keulkeul.blogspot.com
4 5
Concepts dun document WSDL Une donne : information type Un message : regroupe un ensemble de donnes Une opration : action fournie par le Web Service (~ mthode au sens Java) Un type de port : ensemble daction (~ interface au sens Java) Un binding : dfinit pour un type de port le protocole utilis
keulkeul.blogspot.com
pour transmettre les informations et le format des donnes Un port : dfinit o est localis le Web Service et le binding utiliser Un service : un ensemble de ports
WSDL - M. Baron - Page 10
WSDL par lexemple : service HelloWorld Pour introduire la prsentation du langage WSDL nous dfinissons un Service HelloWorld Le service HelloWorld fournit deux oprations
Une opration makeHello qui prend en paramtre une chane de caractres et retourne une chane caractres Une opration simpleHello sans paramtre en entre et retourne une chane de caractres
keulkeul.blogspot.com
Laccs au service est ralis par lintermdiaire de messages SOAP (tudi en dtail dans le prochain cours) Le protocole utilis pour lchange des messages SOAP est HTTP Le style utilis est du RPC
WSDL - M. Baron - Page 11
keulkeul.blogspot.com
keulkeul.blogspot.com
Dcrit un ensemble doprations o chacune 0 ou plusieurs messages en entre, 0 ou plusieurs messages de sortie ou de fautes
Organisation dun document WSDL Un document WSDL est dcompos en deux parties Partie abstraite qui dcrit les messages et les oprations disponibles
Types (<types>) Messages (<message>) Types de port (<portType>)
Partie concrte qui dcrit le protocole utiliser et le type dencodage utiliser pour les messages
Bindings (<binding>)
keulkeul.blogspot.com
Services (<service>)
Plusieurs parties concrtes peuvent tre proposes pour la partie abstraite Motivation de cette sparation ? Rutilisabilit de la partie abstraite WSDL - M. Baron - Page 15
Partie Abstraite
Port Type 1
ABCBinding
DEFBinding
Partie Concrte
keulkeul.blogspot.com
Service 1
Service 2
Service 3
WSDL Document
WSDL - M. Baron - Page 16
WSDL par lexemple : Carnet dadresse Le service Notebook fournit trois oprations
Une opration addPerson qui prend en paramtre un objet Person et retourne un boolen pour indiquer ltat de cration Une opration addPerson qui prend en paramtre trois chaines de caractres (name, address et birthyear) sans retour Une opration getPersonByName qui prend en paramtre une chane de caractre et retourne un objet Person Une opration getPersons sans paramtre en entre et qui retourne un tableau dobjets Person
keulkeul.blogspot.com
Laccs au service est ralis par lintermdiaire de messages SOAP (tudi en dtail dans le prochain cours) Le protocole utilis pour lchange des messages SOAP est HTTP et le style utilis est du RPC WSDL - M. Baron - Page 17
Elment Types Llment <type> contient la dfinition des types utiliss pour dcrire la structure des messages changs par le Web Service Le systme de typage est gnralement un Schema XSD mais dautres systmes sont autoriss (RELAX NG par exemple) Cet lment peut tre facultatif si les types utiliss par les messages sont des types de bases (Integer, Boolean, )
keulkeul.blogspot.com
Dans le cas de structures complexes (Person par exemple) un Schema XML est alors employ Un rappel sur le langage Schema XML est disponible
Le cours dEric Sardet (sardet@ensma.fr)
http://mbaron.developpez.com/divers/schemaxml
Une personne est dfinie par une adresse, une anne de naissance et un nom
keulkeul.blogspot.com
Elment Types La dfinition des types peut galement tre importe partir dun fichier Schema XML Le fichier XML est accessible au mme titre que le document WSDL Ladresse de lhte du Schema XML nest pas forcment la mme que celle du document WSDL Cette sparation permet
keulkeul.blogspot.com
de rutiliser des types dans plusieurs WSDL diffrents dviter dalourdir le document WSDL
Elment Types Exemple : Dfinition des types pour Notebook service (bis)
<definitions targetNamespace="http://notebookwebservice.lisi.ensma.fr/" name="Notebook" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ...> <types> <xsd:schema> <xsd:import namespace="http://notebookwebservice.lisi.ensma.fr/" schemaLocation="Notebook_schema1.xsd"/> </xsd:schema> </types> ... </definitions>
keulkeul.blogspot.com
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://notebookwebservice.lisi.ensma.fr/" ...> <xs:complexType name="person"> <xs:sequence> <xs:element name="address" type="xs:string" minOccurs="0"/> <xs:element name="birthyear" type="xs:string" minOccurs="0"/> <xs:element name="name" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="personArray" final="#all"> <xs:sequence> <xs:element name="item" type="tns:person" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xs:sequence> </xs:complexType> </xs:schema>
Elment Messages Llment <message> permet de dcrire les messages changs par les services
Paramtres dentres des oprations Paramtres de sorties Exception
Chaque <message> est identifi par un nom (attribut name) et est constitu dun ensemble dlments <part> En quelque sorte un lment <part> correspond un paramtre dune opration
keulkeul.blogspot.com
Si une opration est dcrit par plusieurs paramtres, plusieurs lments <part> seront dfinir Llment <part> est dfini par
un nom (attribut name) un type (attribut type)
WSDL - M. Baron - Page 22
Message utilis pour lappel dune opration avec une seule partie Message utilis pour le rsultat dune opration avec une seule partie Message utilis pour lappel dune opration avec trois parties
keulkeul.blogspot.com
Une partie qui pointe sur un type dfini par llment <types>
Elment portType et sous lment Operation Un lment <portType> est un regroupement doprations et peut compar une interface Java Caractristique dun lment <portType>
Identifiable par un nom (attribut name) Compos de sous lment <operation>
keulkeul.blogspot.com
Elment portType et sous lment Operation Une opration exploite les messages via les sous lments
<input> : message transmis au service <output> : message produit par le service <fault> : message derreur (trs proche des exceptions)
Elment portType et sous lment Operation Exemple : Dfinition des Port pour Notebook service
<definitions targetNamespace="http://notebookwebservice.lisi.ensma.fr/" name="Notebook" ...> <types> ... </types> <message> ... </message> <portType name="Notebook"> <operation name="addPerson"> <input message="tns:addPersonWithComplexType"/> <output message="tns:addPersonWithComplexTypeResponse"/> </operation> <operation name="addPerson" parameterOrder="name address birthyear"> <input message="tns:addPersonWithSimpleType"/> </operation> <operation name="getPerson"> <input message="tns:getPerson"/> <output message="tns:getPersonResponse"/> </operation> <operation name="getPersons"> <input message="tns:getPersons"/> <output message="tns:getPersonsResponse"/> </operation> </portType> </definitions>
keulkeul.blogspot.com
Elment portType et sous lment Operation Possibilit de dfinir une opration suivant quatre modles One-way : envoie de messages
Le client du service envoie un message lopration et nattend pas de rponse Uniquement un seul message utilis <input>
<operation name="addPerson" parameterOrder="name address birthyear"> <input message="tns:addPersonWithSimpleType"/> </operation>
Le client du service envoie un message lopration et un message est retourne au client Un message <input>, un message <output> et un message <fault>
<operation name="addPerson"> <input message="tns:addPersonWithComplexType"/> <output message="tns:addPersonWithComplexTypeResponse"/> </operation>
Elment Binding Un lment <binding> permet de raliser la partie concrte dun lment <portType>
un nom (attribut name) un portType (attribut type)
Plusieurs lments <binding> peuvent tre dfinis de sorte quun lment portType peut tre appel de diffrentes manires La structure de llment <binding> dpend du protocole utilis WSDL - M. Baron - Page
29
Elment Binding Structure gnrale de llment <binding> sans prcision sur le protocole employ
<definitions> Ces informations sont ... <binding name="NamePortBinding" type="tns:portType"> spcifiques au protocole <!-- Dcrit le protocole utiliser --> utilis <operation name="operation1"> <!-- Action du protocole sur lopration --> <input> <!-- Action du protocole sur les messages dentrs (input) --> </input> <output> <!-- Action du protocole sur les messages de sorties (ouput) --> </output> <fault> <!-- Action du protocole sur les messages derreurs (fault) --> </fault> </operation> </binding> ... </definitions>
keulkeul.blogspot.com
Le schema XML de WSDL ne dcrit pas les sous lments de binding, operation, input, ouput et fault Ces lments sont spcifiques aux protocoles utiliss
WSDL - M. Baron - Page 30
Binding SOAP Le binding SOAP est dfini par lespace de noms suivant
http://schemas.xmlsoap.org/wsdl/soap/
Prfixe utilis est gnralement soap (de la forme <soap:binding>)
Diffrentes versions peuvent tre utilises : 1.1 et 1.2 (dans la suite nous utiliserons la version 1.1) Les principales balises exploiter dans le binding sont
<soap:binding> <soap:operation>
keulkeul.blogspot.com
A noter que nous dtaillerons certains aspects dans le cours consacr au protocole SOAP WSDL - M. Baron - Page 31
keulkeul.blogspot.com
Binding SOAP : Elment soap:binding Llment <soap:binding> doit tre prsent lors de la dfinition dun binding base de messages SOAP
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> <soap:binding transport="uri"? style="rpc|document"/> </binding> </definitions>
Lattribut style permet dindiquer la faon dont sont crs les messages SOAP pour lensemble des oprations
rpc : encodage dfini par SOAP RPC document : encodage sous forme dlment XML
keulkeul.blogspot.com
Lattribut transport permet de prciser le protocole utiliser pour le transport des messages SOAP
HTTP : http://schemas.xmlsoap.org/soap/http SMTP : FTP,
WSDL - M. Baron - Page 33
Binding SOAP : Elment soap:operation Llment <soap:operation> doit tre prsent pour chaque opration dfinie dans la partie abstraite du document
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> <operation ...> <soap:operation soapAction="uri"? style="rpc|document"?>? </operation> </binding> </definitions>
len-tte HTTP (dans notre cas la valeur sera vide) Lattribut style permet de prciser la faon dont sont crs le messages SOAP de lopration en question (RPC ou document)
WSDL - M. Baron - Page 34
Binding SOAP : Elment soap:body Llment <soap:body> prcise le format des messages changs par une opration Il y a autant dlment <soap:body> quil y a de messages dfinis par une opration (<input>, <ouput> et <fault>)
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> <operation ...> <input> <soap:body parts="nmtokens"? use="literal|encoded"? encodingStyle="uri-list"? namespace="uri"?> </input> <output> <soap:body parts="nmtokens"? use="literal|encoded"? encodingStyle="uri-list"? namespace="uri"?> </output> </operation> </binding> </definitions>
keulkeul.blogspot.com
Binding SOAP : debriefing Beaucoup de chose trs abstraites qui seront illustres dans le support de cours sur SOAP Rapide mise au point
Le style document est largement utilis par la plateforme .NET Le choix entre RPC et Document na pas dimportance puisque le rsultat peut tre identique (historique du standard SOAP) Lutilisation de la valeur encoded (forme des parties des messages)
keulkeul.blogspot.com
nest pratiquement plus supporte par les botes outils Web Services Le protocole HTTP est massivement utilis pour le transport des messages SOAP
WSDL - M. Baron - Page 36
Elment Service et Port Un lment service dfinit lensemble des points dentre du Service Web, en regroupant des lments <port> Llment <port> permet de spcifier une adresse pour un binding donn Un port est dfini par deux attributs
name : nom du port binding : nom du binding (dfini prcdemment)
Le corps de llment <port> est spcifique au protocole utilis pour dfinir le binding
keulkeul.blogspot.com
Dans le cas dun binding de type SOAP, un lment <soap:address> prcise lURI du port Il est par consquent possible dappeler un service des endroits diffrents (plusieurs lments port) - M. Baron - Page WSDL
37
<definitions ...> <!-- Dfinition de la partie Abstraite du WSDL --> <binding ...> </binding> <service name="Notebook"> <port name="NoteBookPort" binding="tns:NoteBookPortBinding"> <soap:address location="http://localhost:8080/NotebookWebService/notebook"/> </port> </service> </definitions>
keulkeul.blogspot.com
Autre chose que du SOAP comme transport Exemple : WSDL qui retourne un GIF ou JPG
<definitions .... > <message name="m1"> <part name="part1" <part name="part2" <part name="part3" </message> <message name="m2"> <part name="image" </message> type="xsd:string"/> type="xsd:int"/> type="xsd:string"/>
type="xsd:binary"/>
<portType name="pt1"> <operation name="o1"> <input message="tns:m1"/> <output message="tns:m2"/> </operation> </portType> <service name="service1"> <port name="port1" binding="tns:b1"> <http:address location="http://example.com/"/> </port> <port name="port2" binding="tns:b2"> <http:address location="http://example.com/"/> </port> <port name="port3" binding="tns:b3"> <http:address location="http://example.com/"/> </port> </service>
keulkeul.blogspot.com
http://www.w3.org/TR/wsdl#_http-e
Autre chose que du SOAP comme transport Exemple (suite) : WSDL qui retourne un GIF ou JPG
<binding name="b1" type="pt1"> <http:binding verb="GET"/> <operation name="o1"> <http:operation location="o1/A(part1)B(part2)/(part3)"/> <input><http:urlReplacement/></input> <output> <mime:content type="image/gif"/> <mime:content type="image/jpeg"/> </output> </operation> </binding> <binding name="b2" type="pt1"> <http:binding verb="GET"/> <operation name="o1"> <http:operation location="o1"/> <input><http:urlEncoded/></input> <output> <mime:content type="image/gif"/> <mime:content type="image/jpeg"/> </output> </operation> </binding> <binding name="b3" type="pt1"> <http:binding verb="POST"/> <operation name="o1"> <http:operation location="o1"/> <input><mime:content type="application/x-www-form-urlencoded"/></input> <output> <mime:content type="image/gif"/> <mime:content type="image/jpeg"/> </output> </operation> </binding> </definitions>
http://www.w3.org/TR/wsdl#_http-e
keulkeul.blogspot.com