Vous êtes sur la page 1sur 114

2011/2012

Cours SOA

2011/2012

Cours SOA

SOA c'est quoi?


L'Architecture Oriente Services (calque de Architecture l'anglais Service Oriented Architecture SOA ou Architecture, AOS) AOS
C'est une architecture logicielle s'appuyant sur un ensemble de services simples qui a succd l'architecture 3-tiers. Tout au long du cours Programmation Web, vous avez considr le cas de dveloppement d'applications qui ont une architecture 3-tiers( appel aussi architecture Web) Architecture 3-tiers? C'est quoi dj?

2011/2012

Cours SOA

Remarques pour rvision


prparer pour l'examen:
Le Language XML Les DTD Les schmas XML ne font pas partie de l'examen Le cours web service: seulement les transparents qui figurent dans ce fichier. Bonne prparation

2011/2012

Cours SOA

3L'architecture 3-tiers
L'architecture 3-tiers: une architecture qui spare une application (web) en 3 couches(tiers) :
La couche de prsentation (IHM) : permet l'interaction de (IHM IHM) l'application avec l'utilisateur. Cette couche gre les saisies au clavier, la souris et la prsentation des informations l'cran. La couche traitement (La logique applicative) : dcrivant les travaux raliser par l'application. Ils sont de deux types :
Traitements locaux regroupant les contrles effectus au niveau du locaux, dialogue avec l'IHM, visant le contrle et l'aide la saisie. Traitements globaux constituant l'application elle-mme. Cette couche, globaux, appele (Business Logic) ou couche mtier, contient les rgles internes qui rgissent une entreprise donne.

La couche donnes (accs et stockage de donnes) : regroupant l'ensemble des mcanismes permettant la gestion des informations stockes par l'application.

2011/2012

Cours SOA

3L'architecture 3-tiers
Exemple : application Web rservation d'htel (agence A): Firewall
Requtes http traitement Serveur Web: Apache, Apache IIS(Internet Information Services), etc. +Serveur d'application: Tomcat, Glassfish, Jboss etc. Application: Php Jsp,ASP, Php, HTML, XHTML, CSS, JS, Donnes SGBD : MySql, MySql, PostgreSql; Oracle, Etc.

prsentation Un navigateur Windows Mac Linux

2011/2012

Cours SOA

3L'architecture 3-tiers
Dans ce modle de dveloppement, on peut seulement changer de l'information: Exemple :
Les documents HTML sont relis par des liens hypertextes Si une agence A veut travailler avec une agence B, les deux elles doivent avoir la mme plateforme (langage de programmation, SGBD) Sinon pour permettre l'interoperabilit, il faut construire une interface de communication!

Problmatique
Les entreprises sont contraintes mieux communiquer avec leurs clients, leurs partenaires, leurs fournisseurs, leurs filiales, pour produire plus vite et moindre cot. Le contexte conomique incite les entreprises aux fusions /acquisitions, lexternalisation de nombreuses activits Les entreprises se trouvent contrainte ouvrir leur SI (systmes d'information) vers les autres systmes qui peuvent tre distants et multi-sites pour garantir leur prennit. Problmatique: Problmatique trs grande divergence dans les SII (systmes d'information Informatique) des entreprises.
2011/2012 Cours SOA 7

2011/2012

Cours SOA

Problmatique
Exemple: fusionner l'Agence A(rservation Htel) + Agence B(rservation de billet d'avion) ???
MySql Requte Rponse Requte Rponse

MS Sql server Requte Rponse Requte Rponse

Comment interagir?
Entreprise A Entreprise B Entreprise C

Entreprise E

Entreprise F Entreprise D

2011/2012

Cours SOA

2 Solutions :
Solution 1. : Tout refaire dans un mme Language de dveloppement ; dans ce cas, l'acquisition de l'agence B n'aurait servi rien! Solution 2. : implmenter l'architecture SOA en se basant sur XML(extensible markup language) et les Web language) Services (2001) comme technologies.
2011/2012 Cours SOA 10

2011/2012

Cours SOA

11

XML et les Web Services sont la solution 1/2


XML et les Web Services sont la solution
XML est trs utile dans cette architecture pour pouvoir transporter verticalement les donnes entre l'agence A et l'agence B. Les Web services, en se basant sur XML, permettent aux applications de communiquer et d'offrir un service travers le Web sans se soucier ni du systme d'exploitation, ni du langage de dveloppement.

2011/2012

Cours SOA

12

XML et les Web Services sont la solution 2/2


Les applications sont construites l'aide de plusieurs services Web provenant de sources diffrentes et fonctionnant ensemble, quelque soient leur emplacement et la manire dont les applications ont t mises en uvre. Un service Web est le fournisseur d'un service via le web comme un site web est le fournisseur d'une information via le web.

XML et Web Services? Dfinitions 1/2


Web Services are software applications that can be discovered, described, and accessed based on intranets, XML and standard Web protocols over intranets extranets, Internet. extranets and the Internet - W3C Un programme informatique permettant la communication et l'change de donnes entre applications et systmes htrognes dans des environnements distribus via Internet ou un intranet, et ceci indpendamment des platesformes et des langages sur lesquelles elles reposent.
2011/2012 Cours SOA 13

Web Services? Dfinitions 2/2


Les services Web s'appuient sur un ensemble de protocoles/standard trs rpandus (XML, HTTP), afin de communiquer. Cette communication est base sur le principe de demandes et rponses, effectues avec des messages XML.

2011/2012

Cours SOA

14

Plan du cours (1/2)


semaine 1 semaine 2 semaine 3 semaine 4 semaine 5 semaine 6 semaine 7 semaine 8 semaine 9 semaine 10 semaine 11 semaine 12
2011/2012

14 sept 2011Introduction SOA, XML 21 sept 2011 XML 28 sept 2011XML 05 oct 2011XML 12 oct 2011 DTD 19 oct 2011 DTD 26 oct 2011 XML schema 02 nov 2011 XML schema 09 nov 2011XML schema 16 nov 2011 DS 23 nov 2011Web services 30 nov 2011Protocole SOAP Cours SOA

15

Plan du cours (2/2)


semaine 14 semaine 15 semaine 16 semaine 17 semaine 18 semaine 19 semaine 20 semaine 21 07 dec 2011Protocole SOAP 14 dec 2011 Dev services Web 21 dec 2011Dev services Web 28 dec 2011vacances 04 jan 2012 vacances 11 jan 2012 Dev services Web/revision 18 jan2012 revision 23 jan 2012-01 fev 2012 examen

2011/2012

Cours SOA

16

Partie 2

2011/2012

Cours SOA

17

Web Services? Autres dfinitions


Il existe probablement autant de dfinitions des Web Services que d'entreprises qui les crent, mais presque toutes ces dfinitions ont ceci en commun :
Un service web est un programme informatique permettant la communication et l'change de donnes entre applications et systmes htrognes dans des environnements distribus distribus. Il s'agit donc d'un ensemble de fonctionnalits exposes sur internet ou sur un intranet par et pour des applications ou intranet, machines, sans intervention humaine, et invocable en temps rel. En d'autres termes, un service Web est tout simplement un programme accessible au moyen d'Internet, qui utilise un systme de messagerie standard XML, et n'est li aucun systme d'exploitation ou langage de programmation !
Wikipdia 01/2011
2011/2012 Cours SOA 18

Web Services?
But:
Permettre linteroprabilit entre des applications diverses.

L'interoprabilit ??
Rfre la capacit d'un systme coexister et cooprer avec d'autres systmes ventuellement htrognes selon un schma ouvert d'interconnexion.
Langages de programmation diffrents, SGBD diffrents, Architectures diffrentes etc.
2011/2012 Cours SOA 19

L'intrt d'un Service Web


Les services Web sont normaliss car ils utilisent les standards XML et HTTP pour transfrer des donnes et ils sont compatibles avec de nombreux autres environnements de dveloppement. Les services Web fournissent un lien entre applications. Ainsi, des applications utilisant des technologies diffrentes peuvent envoyer et recevoir des donnes au travers de protocoles comprhensibles par tout le monde. C'est dans ce contexte qu'un intrt trs particulier a t attribu aux WS puisqu'ils permettent aux entreprises d'offrir des applications accessibles distance par d'autres entreprises.
2011/2012 Cours SOA 20

Caractristiques d'un WS
Un service Web possde les caractristiques suivantes : Il dispose d'une interface publique (ensemble d'oprations) dcrite en XML et se basant sur WSDL Web Service Description Language. chaque Web service est rattach un fichier .WSDL pour le dcrire. Cette description (fonctionnalits, comment l'invoquer et o le trouver?) sont stockes dans un annuaire appel UDDI - Universal Description, Discovery and Integration. Le Web service est accessible via le rseau et est invoqu en utilisant des messages XML, ces messages sont transports par des protocoles Internet (gnralement HTTP, SMTP, FTP,... ) selon SOAP - Simple Object Access Protocol : le Protocole pour la communication entre WS.
2011/2012 Cours SOA 21

L'architecture des SW
Le schma suivant rsume l'architecture sur 1. Dploiement Annuaire laquelle repose les Web Service de Services services: On parle ici de rle et 2. Publication pas de machine car une 3. Dcouverte mme machine peut jouer plusieurs Fournisseur 4. Invocation Client rle. du Service du Service
Service
2011/2012 Cours SOA 22

L'architecture des SW
Le fournisseur de service (service provider) met en application le service Web et le rend disponible sur Internet. Le consommateur du service (service requester) utilise un service Web existant en ouvrant une 2.Dcouverte connexion rseau et en envoyant une demande en XML. Le registre de service (service registry) registry) est un annuaire de services. Le registre fournit un Client endroit central o les programmeurs du Service peuvent publier de nouveaux services ou en trouver.
2011/2012 Cours SOA

Annuaire de Services

1.Publication

3. Invocation

Fournisseur du Service Service

23

Les interactions entre ces 3 acteurs suivent plusieurs tapes : publication: La publication le fournisseur diffuse les descriptions de ses SW dans l'annuaire. La dcouverte : le client cherche un WS particulier, il s'adresse un annuaire qui va lui fournir les descriptions des SW demands afin de lui permettre de les invoquer. L'invocation : une fois que le client rcupre la description du service, il les utilise pour l'invoquer auprs du fournisseur de services.

L'architecture des SW
Annuaire UDDI De Web Services

3. Dcouverte

(SOAP)

Description

WSDL Description WSDL

1. Publication

(SOAP)
Fournisseur de Web Services Web Service
Description

Client du Web Service Application cliente

4. Invocation

(SOAP)

Application

WSDL
24
2011/2012 Cours SOA 24

Le scenario complet
tape 1 : dfinition, description du service
On doit dcrire d'un point de vue informatique ce que fait le service, la solution qu'il propose, ... La dfinition est faite en WSDL au sein du fournisseur de services (i.e. le serveur d'applications)

tape 2 : publication du service


Une fois le service dfinit et dcrit en termes de mise en uvre, il peut tre dclar dans un annuaire, on parle alors de publication du service afin de le rendre accessible aux clients. Comme on le verra, la publication sera effectu au sein d'un annuaire ddi UDDI.

2011/2012

Cours SOA

25

Le scenario complet
tape 3 : recherche du service
Le client se connecte, sur un annuaire (UDDI) pour effectuer une recherche de service.

tape 4 : enregistrement au service web


Une fois le service trouv par le client, ce dernier doit s'enregistrer auprs du fournisseur associ au service. Cet enregistrement indique au fournisseur l'intention du client d'utiliser le service suivant les conditions dcrites dans la publication.
2011/2012 Cours SOA 26

Le scenario complet
tape 5 : mise en uvre du service
Le client peut invoquer le service suivant les conditions inscrites au sein de l'annuaire lors de la publication du service web (tape 2)

tape 6 : composition
C'est la possibilit de combiner plusieurs services. En fait, un service peut devenir le client d'un autre service.
2011/2012 Cours SOA 27

Exemples de Web Service


Un service Web peut par exemple :
Rcuprer un cours de bourse Faire une demande automatiquement mise jour d'un prix ; Accder un calendrier universel faisant les conversions entre calendriers internationaux et connaissant, pour chaque pays, les dates des jours fris ; Traduire un passage Valider un numro international de code postal...
2011/2012 Cours SOA 28

O trouver les web services


O trouver les web services :
http://webservices.seekda.com/ :Moteur de recherche de Web service (28500+ web services) http://www.wsindex.org/index.html : des ressources et des liens vers les web services. http://www.xmethods.net/ : un ensemble de web services publiques que vous pouvez tester.

2011/2012

Cours SOA

29

Exemple

2011/2012

Cours SOA

30

2011/2012

Cours SOA

31

2011/2012

Cours SOA

32

2011/2012

Cours SOA

33

34

Le Protocole SOAP

2011/2012

Cours SOA

SOAP
SOAP est un protocole de communication entre application bas sur le langage XML Objectifs viss:
Assurer la communication entre applications dune mme entreprise (intranet) Assurer les changes interentreprises entre applications et services (Web) Il permet d'appeler une mthode et d'envoyer des messages aux machines distantes via HTTP le plus souvent, mais peut galement se faire par un autre protocole, comme SMTP

Recommandation du W3C
But : changer des informations structures dans un environnement dcentralis et distribu. SOAP 1.1 : http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ SOAP 1.2 : http://www.w3.org/TR/soap12/
2011/2012 Cours SOA 35

SOAP
Qui est derrire? Initiative conjointe de Microsoft et IBM,
1.1, SOAP 1.1 W3C note soumise en mai 2000, SOAP 1.2, recommandation du W3C, juin 2003, 1.2 Initialement SOAP dsignait lacronyme de Simple Object Access Protocol SOAP n'est plus un acronyme depuis la version 1.2. La notion d'objet (spcifie dans Simple Object Access Protocol) Protocol devient donc obsolte. Les deux plus fortes fonctionnalits de SOAP sont sa simplicit et le fait que tout le monde a accept de l'utiliser.
2011/2012 Cours SOA 36

Rles de SOAP
Rles :
SOAP permet des mthodes (dun code source) de toute nature sur nimporte quelle plateforme, dans nimporte quel langage de communiquer. lheure actuelle, la spcification SOAP a t mis en uvre dans plus de 60 langages sur plus de 20 plateformes.

2011/2012

Cours SOA

37

Fonctionnement de SOAP
Un message SOAP est envoy d'un expditeur (client) un destinataire (serveur), directement ou via des intermdiaires.
Fonctionnement ct Client (simplifi)
Ouverture d'une connexion HTTP et envoie d'une requte Requte SOAP est un document XML dcrivant :
une mthode invoquer sur une machine distante Les paramtres de la mthode

Fonctionnement ct Serveur (simplifi)


Rcupre la requte Excute la mthode avec les paramtres Renvoie une rponse SOAP (document XML) au client
2011/2012 Cours SOA 38

Exemple

2011/2012

Cours SOA

39

2011/2012

Cours SOA

40

2011/2012

Cours SOA

41

2011/2012

Cours SOA

42

SOAP par lexemple : Requte vers un service

<?xml encoding="utf="utf <?xml version="1.0" encoding="utf -8"?> xmlns:xsi="http://www.w3.org/2001/XMLSchema ="http://www.w3.org/2001/XMLSchema<soap:Envelope xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:Body> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> < soap:Body> xmlns="http://www.webserviceX.NET"> <GetCountryByCurrencyCode xmlns="http://www.webserviceX.NET"> CurrencyCode>TND</CurrencyCode> </GetCountryByCurrencyCode >TND</CurrencyCode GetCountryByCurrencyCode> <CurrencyCode>TND</CurrencyCode> </GetCountryByCurrencyCode> </soap:Body </soap:Envelope soap:Body> soap:Envelope> </soap:Body> </soap:Envelope>

La rponse SOAP du service


<?xml encoding="utf="utf <?xml version="1.0" encoding="utf -8"?> xmlns:xsi="http://www.w3.org/2001/XMLSchema ="http://www.w3.org/2001/XMLSchema<soap:Envelope xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd ="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:Body> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> < soap:Body> xmlns="http://www.webserviceX.NET"> <GetCountryByCurrencyCodeResponse xmlns="http://www.webserviceX.NET"> GetCountryByCurrencyCodeResult>Tunisia</GetCountryByCurrencyCodeResult> </GetCountryByCurrencyCodeResult <GetCountryByCurrencyCodeResult>Tunisia</GetCountryByCurrencyCodeResult> </GetCountryByCurrencyCodeResponse </soap:Body GetCountryByCurrencyCodeResponse> soap:Body> </GetCountryByCurrencyCodeResponse> </soap:Body> </soap:Envelope soap:Envelope> </soap:Envelope>
2011/2012 Cours SOA 43

Structure d'un message SOAP 1/2


Un message SOAP est un document XML constitu dune enveloppe compose de deux parties : Structure dun message:
Enveloppe / <envelope> (lment racine obligatoire), il envelope> contient:
Entte / <header> ( lment optionnel) header>
Contient des entres non applicatives (Ex: Transactions, sessions, )

Peuvent tre adresses certains intermdiaires Leur traitement peut tre marqus comme obligatoire

Corps / <body> (lment obligatoire)


Contient les entres applicatives du message :Nom dune mthode, valeurs des paramtres, valeur de retour.

Comme les messages SOAP ne peuvent pas tre envoys en lots, l'enveloppe contient un seul message.
2011/2012 Cours SOA 44

Structure d'un message SOAP 2/2


La requte et la rponse ont la mme structure :
Message SOAP
Protocole Header SOAP Envelope SOAP Header SOAP Body Entte du protocole de transport (ex HTTP) Entte SOAP: stockage des informations non applicatifs

Corps qui contient les appels de mthodes (en XML) Gestion des erreurs

SOAP Fault

2011/2012

Cours SOA

45

SOAP envelope
Rgles de syntaxe - Un message SOAP :
DOIT tre codes en utilisant le langage XML La spcification impose que les balises, les sous balises ainsi que tous les attributs contenus dans l'enveloppe SOAP doivent explicitement associs un namespace, de manire supprimer toute ambigut. Ces namespaces doivent tre dfinis correctement. NE DOIT PAS contenir ni une rfrence DTD ni des instructions de traitement XML. Toutes les balises XML associes SOAP doivent avoir :
Le prfixe soap: ou soap-env pour SOAP 1.1. Le prfixe env pour SOAP 1.2.
2011/2012 Cours SOA 46

SOAP envelope
SOAP envelope (enveloppe) :
C'est l'lment de racine du message SOAP. L'enveloppe SOAP sert de conteneur aux autres lments du message SOAP, elle est dfinie au dbut par la balise <soap:Envelope> et se termine par la balise </soap:Envelope> . Le prologue XML contient seulement une dclaration XML <?xml version="1.0" encoding="UTF-8" ?> spcifiant la version de XML et lencodage des caractres du message XML. Syntaxe: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding" ="http://schemas.xmlsoap.org/soap/encoding"> soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding"> </soap:Envelope soap:Envelope> </soap:Envelope>
2011/2012 Cours SOA 47

SOAP envelope
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding" ="http://schemas.xmlsoap.org/soap/encoding"> soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding"> </soap:Envelope soap:Envelope> </soap:Envelope> Par convention, la spcification SOAP dfinit plusieurs namespaces :
soap-env: ou soap: comme prfixe associ l'URI http://schemas.xmlsoap.org/soap/envelope/ pour dfinir le namespace de l'enveloppe dans la version 1.1. env: comme prfixe associ l'URI http://www.w3.org/2003/05/soap-envelope/ pour dfinir le namespace de l'enveloppe dans la version 1.2. L'attribut encodingStyle associ l'URI http://www.w3.org/2001/12/soap-encoding pour la dfinition des formats de types de donnes.
2011/2012 Cours SOA 48

(L'enSOAP header (L'en-tte)


(L'enSOAP header (L'en-tte) :
L'en-tte est un lment facultatif dans un message SOAP. Si prsent, il doit tre le premier lment dans l'enveloppe SOAP. Il sert communiquer des informations pour :
Authentifier l'metteur, Dfinir des rgles de scurit et des algorithmes de chiffrement utiliser pour la lecture du message, Donner le contexte d'une transaction, Etc.

La spcification SOAP n'indique pas comment ajouter ce type d'information dans l'entte.
2011/2012 Cours SOA 49

L'entte SOAP
L'en-tte d'un message SOAP commence avec la balise <soap:Header> et se termine avec la balise </soap:Header>,
Note : on peut aussi trouver: <soap-env:Header></soap-env:Header>.

2 attributs associs l'en-tte SOAP : soap:mustUnderstand : cet attribut prend la valeur 1 ou 0:


La valeur 1 : le rcepteur doit reconnatre l'information prsente dans l'entte, son traitement est obligatoire. La valeur 0 : l'en-tte peut tre ignor par le rcepteur.

Note : En labsence de cet attribut, llment fils est destination du destinataire final du message SOAP.
2011/2012 Cours SOA

soap:actor : cet attribut identifie le destinataire de llment fils. Comme un message SOAP peut traverser plusieurs composants avant datteindre le destinataire final du message, il peut tre ncessaire dadresser des informations aux composants intermdiaires qui composent le chemin vers le destinataire final. Cest par lintermdiaire de cet attribut que cela est rendu possible, en lui donnant comme valeur une URL qui correspond ou aux destinataires de llment.

50

SOAP body
Le corps SOAP <soap:Body> est un lment obligatoire dans le message SOAP.
Il contient l'information destine au receveur.

Le contenu du corps SOAP est utilis pour spcifier un appel de mthode un ordinateur distant avec les valeurs de paramtres.
Par exemple, la demande du solde d'un compte bancaire.

Le corps du message SOAP commence avec la balise <soap:Body> et se termine avec la balise </soap:Body>.
2011/2012 Cours SOA 51

SOAP body (requte)


Exemple : L'extrait suivant reprsente un corps SOAP qui fait appel une mthode appele GetPrice():
L'lment <GetPrice> fournit le nom de la mthode appeler: GetPrice(). GetPrice(). L'lment <Item> est un paramtre qui est pass dans la mthode GetPrice(). GetPrice().
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <m:GetPrice xmlns:m="http://www.w3schools.com/prices"> <m:Item>Apples</m:Item> </m:GetPrice> </soap:Body> </soap:Envelope>
2011/2012 Cours SOA 52

SOAP body (rponse)


Exemple : L'extrait suivant reprsente un corps SOAP qui est la rponse l'appel la mthode appele GetPrice():
L'lment <GetPriceResponse> fournit le nom de la mthode qui a t appele: GetPrice(). GetPrice(). L'lment <Price> contient la valeur de retour de GetPrice(). GetPrice().
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse> </soap:Body> </soap:Envelope>
2011/2012 Cours SOA 53

SOAP body
Exemple : L'extrait suivant reprsente un corps SOAP qui fait appel une mthode appele checkAccountBalance():
<soap:Body> <checkAccountBalance> <accountNumber xsi:type="xsd:int">1234567890</accountNumber> </checkAccountBalance> </soap:Body>

L'lment <checkAccountBalance> fournit le nom de la mthode appeler : checkAccountBalance. L'lment accountNumber est un paramtre qui est pass dans la mthode checkAccountBalance. Les attributs xsi et xsd dfinissent les espaces de noms qui vont tre utiliss dans le corps du message.
La dfinition 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 donne au paramtre.
2011/2012 Cours SOA 54

Body: Syntaxe
La partie Body encapsule un unique tag de mthode qui porte le nom de la mthode elle-mme:
<ns1:maMethode ... > ou <ns1:maMethodeReponse ... > (le mme nom suivi du mot Response dans le cas du message de rponse). Exp: Mthode GetPrice() lment <m:GetPrice> dans la requte et <m:GetPriceResponse> dans la rponse.

Le tag de la mthode reoit typiquement le namespace correspondant au nom du WS, pour assurer lunicit.
Exp: <m: m:GetPrice>, <m: , m:GetPriceResponse> ont le namespace m. m: m:

Le tag de mthode encapsule son tour un certain nombre de paramtres, tel que le tag <param1 ... > dans lenveloppe dune requte. En prsence de plusieurs paramtres, leur ordre d'apparition n'a pas d'importance. Dans le message de rponse, on ne trouve quun seul tag de paramtre reprsentant la valeur de retour de la mthode (gnralement appel <return>).
2011/2012 Cours SOA 55

Fault> SOAP <Fault>


L'lment optionnel SOAP <Fault> est utilis pour indiquer les messages d'erreur.
Si un lment <Fault> est prsent, il doit apparatre comme un lment enfant de <Body> . Un lment <Fault> ne peut apparatre qu'une fois dans un message SOAP.
<soap:Envelope <soap:Header> </soap:Header> <soap:Body> soap:Fault> </soap:Fault soap:Fault> <soap:Fault> </soap:Fault> </soap:Body> </soap:Envelope>
2011/2012 Cours SOA 56

Fault> SOAP <Fault>


L'lment <Fault> comporte les lments suivants comme fils :
lment <faultcode> Description Contient un code qui identifie l'erreur. SOAP dfinit 4 codes d'erreur: VersionMismatch (namespace du bloc Envelope non valide), MustUnderstand (un lment fils du bloc Header qui devait absolument tre compris ne l'a pas t), Client (message mal formate ou non valide), Server (problme lors du traitement du message). <faultstring> Contient un texte dcrivant brivement l'erreur pour un humain. <faultactor> Contient le composant (i.e., son URL) qui a gnr l'erreur. <detail> Contient des informations spcifiques l'application et concernant l'erreur.

2011/2012

Cours SOA

57

Exemple d'un bloc <fault>


Ici, l'erreur provient du composant (messageDispatcher) qui n'a pas t en mesure de traiter le message (i.e., de le diriger vers le destinataire final).
<soap:Envelope <soap:Header> </soap:Header> <soap:Body> <soap:Fault> faultcode> </faultcode <faultcode>soap:Server</faultcode> </faultcode> <faultstring>Impossible de router le message.</faultstring> <faultactor>http://www.exemple.com/messageDispatcher</faultactor> <detail> <m:error xmlns:m="http://www.exemple.com/errors"> E_NO_ROUTE </m:error> </detail> </soap:Fault> </soap:Body> </soap:Envelope>
2011/2012 Cours SOA 58

SOAP transport par HTTP


SOAP utilise un protocole de transport pour vhiculer les messages SOAP de lmetteur au rcepteur
HTTP, HTTP SMTP, FTP,
Entte HTTP Corps HTTP SOAP Envelope SOAP Header SOAP Body

Le modle requte/rponse de SOAP convient parfaitement au modle requte/rponse HTTP.

SOAP Fault

Requte/rponse HTTP
2011/2012 Cours SOA 59

Exemple Requte HTTP/SOAP

POST /country.asmx HTTP/1.1 Host: www.webservicex.net Contentcharset=utf =utfContent-Type: text/xml; charset=utf- 8 ContentContent-Length: 539 SOAPAction: SOAPAction: "http://www.webserviceX.NET/GetCurrencyByCountry"
<?xml version="1.0" encoding="utf-8"?> <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/"> <soap:Body> <GetCurrencyByCountry xmlns="http://www.webserviceX.NET"> CountryName>Tunisia</CountryName> >Tunisia</CountryName <CountryName>Tunisia</CountryName> </GetCurrencyByCountry> </soap:Body> </soap:Envelope>

2011/2012

Cours SOA

60

Exemple Requte HTTP/SOAP


POST /country.asmx HTTP/1.1 Host: www.webservicex.net Contentcharset=utf =utfContent-Type: text/xml; charset=utf- 8 ContentContent-Length: 539 SOAPAction: SOAPAction: "http://www.webserviceX.NET/GetCurrencyByCountry"

Mthode de type POST (Envoi de donnes au service situ l'URL spcifie) Content-Type : renseigne sur le type MIME de lentit transporte, doit Contenttre obligatoirement text/xml, pour un message SOAP. cette valeur suit lattribut charset (encoding). SOAPAction : SOAP introduit dans len-tte HTTP POST le nouveau champ de requte SOAPAction, pour indiquer le but du message SOAP.
La spcification SOAP 1.1 prcise que ce champ est obligatoire dans une requte HTTP vhiculant un message SOAP. soit contient un URL(qui peut tre aussi une chane de caractres vide) ; soit ne contient aucune valeur (mais le champ est prsent quand mme).

2011/2012

Cours SOA

61

Exemple Rponse HTTP/SOAP


La rponse SOAP du service
HTTP/1.1 200 OK Contenttext/xml; charset=utfContent-Type: text/xml; charset=utf- 8 Content-Length: Content-Length: 465 <?xml version="1.0" encoding="utf-8"?> <?xml encoding="utf="utf <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/"> <soap:Body> <GetCurrencyByCountryResponse xmlns="http://www.webserviceX.NET"> <GetCurrencyByCountryResult>TND</GetCurrencyByCountryResult> </GetCurrencyByCountryResponse> </soap:Body> </soap:Envelope>

2011/2012

Cours SOA

62

Exemple Rponse HTTP/SOAP


HTTP/1.1 200 OK Contenttext/xml; charset=utfContent-Type: text/xml; charset=utf- 8 Content-Length: Content-Length: 465 <?xml encoding="utf="utf <?xml version="1.0" encoding="utf -8"?>

La rponse HTTP vhicule les codes de retour HTTP. Dans la liaison SOAP/HTTP, les codes 2xx indiquent que le message SOAP a t reu. Si code 500, message en erreur, le corps SOAP doit contenir l'lment <fault>.

2011/2012

Cours SOA

63

Quelques plateformes
Apache Axis (open-source) Sun metro/ Glassfish Microsoft .Net IBM WebSphere Oracle application Server NuSOAP (PhP) Voir http://www.Soapware.org pour une liste exhaustive
2011/2012 Cours SOA 64

65

Implmentation des Web services

2011/2012

Cours SOA

Mon premier service Web


Nous nous intressons dans ce cours au dveloppement des services Web :
Ct Serveur : code du service Web Ct Client : code qui permet dappeler un service Web

La majorit des langages de programmation orients Web supportent le dveloppement de services Web
Java, PHP, C#, C++,
2011/2012 Cours SOA 66

Mthodologie dveloppement service web


Lorsque vous dveloppez un service web (Endpoint), vous avez la possibilit de partir d'un code (bottom-up), ou depuis le contrat (WSDL) qui dfinit votre service (top-down). 2 approches sopposent :
Approche 1: lapproche "bottom-up" : commencer 1: "bottom up" bottompartir du code source du service web Approche 2: lapproche "top-down": partir de 2: "top down": toplinterface WSDL du service web. (ne fais pas partie de ce cours).

2011/2012

Cours SOA

67

BottomApproche Bottom-up
La librairie Nusoap est un ensemble de classes Php qui permettent la cration et la consommation de WS bass sur SOAP 1.1, WSDL 1.1 et HTTP 1.0/1.1 La librairie NUSOAP est sous license GNU en PHP4. Elle a t dveloppe par NuSphere et Dietrich Ayala.
Tlchargement de Nusoap (NuSOAP SOAP Toolkit for PHP) :nusoap-0.9.5.zip
http://sourceforge.net/projects/nusoap/

Extraire le dossier compress dans le dossier www de votre serveur WAMP Renommer le dossier compress ; nusoap Une fois la librairie tlcharge, et place dans un sous rpertoire o va se trouver votre fichier webservice, nous allons pouvoir commencer a voir comment crer votre web service.
2011/2012 Cours SOA 68

topLapproche top-down
Initialement, on a :
Un script .php (une fonction par exemple)

prparer:
Web service: webservice.php Application cliente: Client.php .WSDL: il est gnr automatiquement par Nusoap
Client du Web Service Application Cliente HelloYouClient.php Requte Fournisseur de Web Service Web Service HelloYouWS.php
Description

(SOAP) rponse

Application: HelloYou.php

HelloYou.WSDL
2011/2012 Cours SOA 69

bottomlapproche bottom-up : cration du Web service partir d'une fonction php

2011/2012

Cours SOA

70

bottomlapproche bottom-up : cration du Web service partir d'une fonction php


Vous devez crer un fichier pour votre web service, nous allons le nommer par exemple webservice.php : Syntaxe:
<?php <?php

//on inclut la librairie ncessaire pour mettre en place le webservice


require_once("../lib/nusoap.php");

//on initialise un nouvel objet serveur


$server = new soap_server();

// on configure en donnant un nom et un Namespace


$server -> configureWSDL('nomDuWebservice','Namespace'); ?>

Votre web service est cre, il vous faut maintenant ajouter des mthodes, et le faire communiquer avec les diffrents clients.
2011/2012 Cours SOA 71

bottomSyntaxe: Cration des lapproche bottom-up : cration du Web service partir d'une fonction php

<?php <?php //nous crons ici la fonction rajouter la suite du code

//de la page prcdente


function nomfonction($parametre){

//--code de la fonction ici-Return $retour;}

//on enregistre la mthode grce register $server->register('nomfonction', //nom de la mthode array('parametre'=>'xsd:string'), //entre(s) et type(s) array('retour'=>'xsd:string'), //valeur de retour et type 'Namespace'); //espace de nommage // Rendre le serveur accessible
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?>
2011/2012 Cours SOA 72

Exemple
Exemple : l'approche bottom-up pour crer un web service contenant la fonction suivante hello.php qui prend en argument une chaine de caractres et qui la renvoie:
<php? function hello($name) { $retour='Hello, ' . $name; return $retour; }?>
hello.php

tape 1: Dvelopper le web service (webservice.php) qui contient la fonction hello.php. tape 2: Dployer le WS dans le serveur d'application ( l'enregistrer dans le dossier WWW de WAMP Server) tape 3: Dvelopper un client (client.php) qui l'appellera.
2011/2012 Cours SOA 73

Webservice.php : explication 1/5


Importer la libraire NuSOAP. Celle-ci permettra PHP de communiquer travers le protocole SOAP :
require_once('../lib/nusoap.php');

Ajouter la fonction hello qui prend en argument une chaine de caractres et qui la renvoie:
function hello($name) { $retour='Hello, ' . $name; return $retour ;}
2011/2012 Cours SOA 74

Webservice.php : explication 2/5


Configurer le serveur SOAP : Cette tape fait appelle la librairie NuSOAP que nous avons importe :
Crer une constante $ns pour le namespace pour des fins de clart (on pourrait aussi rcrire le namespace au complet chaque fois qu'il est ncessaire) : $ns="http://localhost/"; Crer un objet soap_server que nous appellerons $server: $server = new soap_server();

2011/2012

Cours SOA

75

Webservice.php : explication 3/5


Configuration de notre serveur SOAP: Configurer l'objet $server pour qu'il offre une interface WSDL afin que l'on puisse communiquer avec lui et donc accder aux services que nous ajouterons la prochaine tape: Pour ce faire, nous devons donner un nom au WSDL et son namespace (rfrenc par $ns):

// Paramtres: Nom du service + Namespace


$server->configureWSDL('MonServiceHello',$ns); Ainsi, NUSOAP va en faite gnrer automatiquement pour .wsdl nous le fichier .wsdl de ce Web service.
2011/2012 Cours SOA 76

Webservice.php : explication 4/5


On enregistre une opration du service web sur ce serveur :
$server->register('hello', array('name' => 'xsd:string'), // Les entres array('return' => 'xsd:string'), // Les sorties $ns, // Le namespace "$ns#hello", // L'action soap 'rpc', // Style de procdure 'encoded', // Encod ou non 'retourner une chaine' // Description de l'opration );
2011/2012 Cours SOA 77

Webservice.php : explication 5/5


Rendre le service accessible sur le serveur :
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA);

Tout ce que PHP ne peut parser et considrer comme une variable contenue dans la mthode GET ou POST est plac en RAW format(tel qu'il est) dans cette variable super global $HTTP_RAW_POST_DATA . Le XML en fait partie.
2011/2012 Cours SOA 78

Webservice.php

2011/2012

Cours SOA

79

tape 2: Dploiement du service Web


Le dploiement d'un service web en PHP est trs simple, il suffit de placer le fichier webservice.php dans le rpertoire contenant toutes le contenu web de notre serveur HTTP (le dossier WWW de WAMP dans notre cas). Le chemin d'accs du web service dploy: par exemple:
c:/wamp/www/nusoap/myservices/webservice.php correspond : http://localhost/nusoap/myservices/webservice.php
2011/2012 Cours SOA 80

Visionnement dans un explorateur web


http://localhost/nusoap/myservices/webservice.php

Lorsqu'on lance ce fichier de service (PAS une application application) PAS dans un explorateur web (simplement en tapant son adresse), nous obtenons la page d'en face, gnre automatiquement par la libraire NuSOAP.

2011/2012

Cours SOA

81

2011/2012

Cours SOA

82

tape 3: Tests d'invocation du service Web et rsultats


Pour tester le service Web, :
1: Mthode 1 Utiliser un logiciel tel que soapUI, .Net WS STUDIO etc. pour tester l'invocation de ce service. 2: Mthode 2 Crer une application (un client) qui fait appel au service que nous venons de crer, Mthode 1: Utiliser un logiciel tel que soapUI pour tester l'invocation de 1 ce service :

http://www.soapui.org/. SOAP UI est un outil pour tester des Web Services


Fonctionnalits de SOAP UI Supporte les Web Services tendus (WSDL + SOAP + UDDI) ou REST Inspecter des Web Services Invoquer des Web Services Dvelopper des Web Services Simuler des Web Services via des bouchons (mocks) Effectuer des tests qualits (temps de rponse, )
2011/2012 Cours SOA 83

Mthode 1: soapUI

2011/2012

Cours SOA

84

SOAPUI: invocation du service

2011/2012

Cours SOA

85

Consommation du Service Web


Mthode 2: Crer une application (un client) qui fait appel au service web que nous venons de crer.
Le Web service est disponible sur le serveur et L'Interface du service est gnre (le WSDL)
N'importe qui peut l'invoquer travers son WSDL peu importe la plateforme choisie.

Dvelopper une application client.php qui appelle le service fourni par webservice.php.
2011/2012 Cours SOA 86

2011/2012

Cours SOA

87

Explication client.php 1/4


Importer la libraire NuSOAP. Celle-ci permettra PHP de communiquer travers le protocole SOAP : require_once('../lib/nusoap.php'); Crer une instance de la classe client en utilisant le constructeur soapclient: ce constructeur prend comme paramtre obligatoire l'URL du fichier WSDL du web service: $client = new soapclient('http://localhost/nusoap/myservices/webservice.php?wsdl');
2011/2012 Cours SOA 88

Explication client.php 2/4


Vrifier s'il y a eu des erreurs lors de la cration du client : l'instance client n'a pu tre cre
// vrifier s'il y a eux des erreurs lors de la cration de l'instance client $err = $client->getError(); if ($err) {// s'il y a une erreur, afficher l'erreur et arrter le script echo '<h2>erreur de cration de client SOAP</h2><pre>' . $err . '</pre>'; exit();

Appeler la mthode du service web : la mthode hello appel avec Sarah comme valeur du paramtre name:
$result = $client->call('hello', array('name' => 'Sarah'));
2011/2012 Cours SOA 89

Explication client.php 3/4


// vrifier si la mthode a retourne une faute (ex: type du paramtre) if ($client->fault) { // s'il y a eu une faute, afficher la faute echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { // vrifier si l'invocation a rencontr des erreurs $err = $client->getError(); if ($err) {// afficher les erreurs rencontres echo '<h2>Error</h2><pre>' . $err . '</pre>'; } else {// pas d'erreur; afficher le rsultat de l'invocation echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>'; }
2011/2012 Cours SOA 90

Explication client.php 4/4


Fonctions facultatives: Afficher le contenu de la requte et de la rponse SOAP ainsi que le debug de l'invocation: Convertit tous les caractres spciaux en entit HTML. htmlspecialchars($chaine, ENT_QUOTES) converti tous les caractres spciaux en entits HTML (ex: '<' devient '&lt;' etc.) // Display the request and response (SOAP messages) echo '<h2>Request</h2>'; echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>'; echo '<h2>Response</h2>'; echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>'; // Display the debug messages echo '<h2>Debug</h2>'; echo2011/2012 . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';?> '<pre>' Cours SOA

91

2011/2012

Cours SOA

92

Interoprabilit entre des environnements htrognes:


Beaucoup de plateformes d'implmentation de Web Services:
Microsoft . Net Apache Axis Sun Java-WS Etc.

Consommer un web service dvelopp sous la platforme .NET avec un client PhP.
2011/2012 Cours SOA 93

Interoprabilit entre des environnements htrognes


Consommer un web service dvelopp sous la platforme .NET avec un client PhP :
Le web service country fourni par l'annuaire publique WebservicesX.net : http://www.webservicex.net/country.asmx?WSDL
Client du Web Service (WAMP) Application Cliente CountryClient.php Requte Fournisseur de Web Service (.NET) Web Service Country (.NET)
Description

Application (.NET)

rponse

(SOAP) Les requtes/rponses SOAP vont transiter via internet


2011/2012 Cours SOA

country.WSDL
94

Le Web service Country


Le web service Country dfini plusieurs fonctions : GetGMTbyCountry Get greenwich mean time(GMT) by country name
GetCountryByCountryCode Get country name by country code GetCountryByCurrencyCode Get country by currency code GetCurrencies Get all currency,currency code for all countries GetCurrencyByCountry Get currency by country name GetCurrencyCodeByCurrencyName Get currency by currency name GetISD Get International Dialing Code by country name Etc

Pour une description dtaille des fonctions et leurs paramtres : http://www.webservicex.net/ws/WSDetails.aspx?WSID=17&CATID=7


2011/2012 Cours SOA 95

SOAPUI: Web service Country

2011/2012

Cours SOA

96

SOAPUI: Web service Country: WSDL

2011/2012

Cours SOA

97

SOAPUI: Requte vers un service

La rponse SOAP du service

2011/2012

Cours SOA

98

Invocation du web service country via un .php:clientcountry.php script .php:clientcountry.php 1/5


Importer la libraire NuSOAP. Celle-ci permettra PHP de communiquer travers le protocole SOAP :
require_once('../lib/nusoap.php');

Crer une instance de la classe client en utilisant le constructeur soapclient: ce constructeur prend comme paramtre obligatoire l'URL du fichier WSDL du web service: $wsdl = "http://www.webservicex.net/country.asmx?WSDL "; $client = new soapclient($wsdl, 'wsdl');
2011/2012 Cours SOA 99

Explication clientcountry.php 2/5


Vrifier s'il y a eu des erreurs lors de la cration du client : l'instance client n'a pu tre cre
// vrifier s'il y a eux des erreurs lors de la cration de l'instance client $err = $client->getError(); if ($err) { // s'il y a une erreur, afficher l'erreur et arrter le script echo '<h2>erreur de cration de client SOAP</h2><pre>' . $err . '</pre>'; exit();

2011/2012

Cours SOA

100

Explication clientcountry.php 3/5


Appeler la mthode du service web : la mthode GetCurrencyByCountry appel avec Japan comme valeur du paramtre CountryName
Mthode 1: passer les paramtre en tant que lments XML Mthode 2: passer les paramtres en tant que tableau php

//appeler la mthode du service web : mthode 1


$param = '<GetCurrencyByCountry xmlns="http://www.webserviceX.NET"> <CountryName>Japan</CountryName> </GetCurrencyByCountry>';

//appeler et afficher le rsultat print_r($client->call('GetCurrencyByCountry', $param));


2011/2012 Cours SOA 101

Explication clientcountry.php 4/5


Mthode 2: passer les paramtres en tant que tableau php

//appeler la mthode du service web : mthode 2 print_r($client->call('GetCurrencyByCountry', array('CountryName' => 'Japan')));

2011/2012

Cours SOA

102

Explication clientcountry.php 5/5


Fonctions facultatives: Afficher le contenu de la requte et de la rponse SOAP ainsi que le debug de l'invocation: Convertit tous les caractres spciaux en entit HTML. htmlspecialchars($chaine, ENT_QUOTES) converti tous les caractres spciaux en entits HTML (ex: '<' devient '&lt;' etc.) // Display the request and response (SOAP messages) echo '<h2>Request</h2>'; echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>'; echo '<h2>Response</h2>'; echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>'; // Display the debug messages echo '<h2>Debug</h2>'; echo2011/2012 . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';?> '<pre>' Cours SOA

103

2011/2012

Cours SOA

104

Clientcountry.php

2011/2012

Cours SOA

105

Request POST /country.asmx HTTP/1.0 Host: www.webservicex.net User-Agent: NuSOAP/0.9.5 (1.123) Content-Type: text/xml; charset=ISO-8859-1 SOAPAction: "http://www.webserviceX.NET/GetCurrencyByCountry" Content-Length: 490 <?xml version="1.0" encoding="ISO-8859-1"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns9659="http://tempuri.org"> Response <SOAP-ENV:Body> <GetCurrencyByCountry xmlns="http://www.webserviceX.NET"> HTTP/1.1 200 OK Cache-Control: private, max-age=0 <CountryName>Japan</CountryName> Content-Length: 858 Content-Type: text/xml; charset=utf-8 Server: Microsoft-IIS/7.0 X-AspNet-Version: 4.0.30319 </GetCurrencyByCountry> X-Powered-By: ASP.NET </SOAP-ENV:Body> Date: Tue, 22 Mar 2011 20:52:45 GMT Connection: close </SOAP-ENV:Envelope> <NewDataSet> <Table> <Name>Japan</Name> <CountryCode>jp</CountryCode> <Currency>Yen</Currency> <CurrencyCode>JPY</CurrencyCode> </Table> <Table> <Name>Japan</Name> <CountryCode>jp</CountryCode> <Currency>Yen</Currency> <CurrencyCode>JPY</CurrencyCode> </Table>Cours SOA </NewDataSet> 106 2011/2012

Outils
Des outils pour construire un document WSDL
Notepad++ (diteur de texte puisquil sagit dXML) Eclipse JavaEE Netbeans Visual Studio (tous les environnements de dveloppement qui manipulent les Web Services)

Des outils pour valider un document WDSL


www.validwsdl.com

Des outils pour manipuler un WSDL


SOAPUI .Net Web Service Studio
2011/2012 Cours SOA 107

TP rendre
Partie 1.
Trouvez un Web service qui contient un mot cl de votre choix :
http://webservices.seekda.com Que fait le service Web que vous avez choisi? Donnez la liste des mthodes que fourni ce service Web? Dcrivez chaque mthode qu'il fourni et ses paramtres d'entre/sortie. Copiez le contenu du fichier .wsdl du service Web que vous avez choisi. Testez le service Web sur l'interface du site seekda.com (capture d'cran). Testez le service Web avec l'outil: .Net Web service Studio et donnez le message SOAP ainsi que la rponse SOAP que vous avez reu. Testez le service Web avec l'outil: SOAPUI et donnez le message SOAP ainsi que la rponse SOAP que vous avez reu. Donnez aussi une capture d'cran.

2011/2012

Cours SOA

108

109

Rvision

2011/2012

Cours SOA

<!ELEMENT tutorials (tutorial)+> <!ELEMENT tutorial (name,url)> <!ELEMENT name (#PCDATA)> <!ELEMENT url (#PCDATA)> <!ATTLIST tutorials type CDATA #REQUIRED>

2011/2012

Cours SOA

110

Trouver les erreurs


<!xml standalone="no ="no"?> <!xml version="1.0" standalone="no "?> <!DOCTYPE "tutorials.dtd"> <!DOCTYPE tutorial SYSTEM "tutorials.dtd"> <tutorials type= > <tutorial>> <url>http://www.quackit.com/xml/tutorial</ur l> name>XML Tutorial</name name> <name>XML Tutorial</name> </tutorial> </tutorial> <name Tutorial</NAME> <tutorial> <name type ="web">HTML Tutorial</NAME> <url>http://www.quackit.com/html/&tutorial</url> /&tutorial</url <url>http://www.quackit.com/html/&tutorial</url> </Tutorial> </tutorials tutorials> </tutorials>
111

2011/2012

Cours SOA

POST http://www.webservicex.net/WeatherForecast.asmx HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 SOAPAction: "http://www.webservicex.net/GetWeatherByPlaceName" User-Agent: Jakarta Commons-HttpClient/3.1 Host: www.webservicex.net Content-Length: 334 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webservicex.net"> <soapenv:Header/> <soapenv:Body> <web:GetWeatherByPlaceName> <!--Optional:--> <web:PlaceName>Tunis</web:PlaceName> </web:GetWeatherByPlaceName> </soapenv:Body> </soapenv:Envelope>
2011/2012 Cours SOA 112

HTTP/1.1 200 OK Cache-Control: private, max-age=0 Content-Type: text/xml; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/7.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 04 Jan 2012 07:25:26 GMT Content-Length: 360 <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetWeatherByPlaceNameRe sponse xmlns="http://www.webservicex.net"><GetWeatherByPlaceNameResult><Latitude>0</Lat itude><Longitude>0</Longitude><AllocationFactor>0</AllocationFactor></GetWeather ByPlaceNameResult></GetWeatherByPlaceNameResponse></soap:Body></soap:Envelope>

2011/2012

Cours SOA

113

<soap:Envelope <soap:Header> </soap:Header> <soap:Body> <soap:Fault> faultcode> </faultcode <faultcode>soap:Server</faultcode> </faultcode> <faultstring>Impossible de router le message.</faultstring> <faultactor>http://www.exemple.com/messageDispatcher</faulta ctor> <detail> <m:error xmlns:m="http://www.exemple.com/errors"> E_NO_ROUTE </m:error> </detail> </soap:Fault> </soap:Body> </soap:Envelope>

2011/2012

Cours SOA

114