P
'
t
i
t
e
C
h
a
t
t
e
 
spacer~ "CONCEPT: ON THE KEYBOARD OF LIFE, ALWAYS KEEP ONE FINGER ON THE ESCAPE BUTTON." Articles | Connexion
 
~Description des Services Web avec WSDL

Précédent  
  Services Web  
  Suivant
 Présentation

Le Web Services Description Language a été introduit pour décrire de manière standard comment deux applications peuvent communiquer, à l'instar d'IDL pour CORBA. Avec WSDL nous pouvons décrire les opérations d'un Service Web ainsi que son emplacement sur Internet.

Dans la pratique un document WSDL ne représente qu'une simple abstraction de l'interface publique d'un Service Web. De fait, nous pouvons générer un document WSDL depuis un code source et inversement. Dans la majorité des cas, le développeur s'attardera en premier lieu à développer une application fonctionnelle et fera appel à des outils de traduction pour générer les interfaces WSDL. La fondation Apache offre à cet effet un outil de traduction dédié à Java dans son implémentation SOAP intitulée Axis. Vous la trouverez sur le CD-Rom accompagnant un exemple de document WSDL généré depuis le Service Web vu précédemment. Les explications suivantes s'appuient dessus. Avant de commencer, sachez que le terme consacré pour définir une collection d'opérations appartenant à un Service Web est "port type".

La grande caractéristique du format WSDL réside dans la décomposition atomique des services. Ainsi un service se compose de "port types", comprenant des opérations, qui sont des agrégats de messages possédant des types de données.

 Sommaire


 Structure

Un tel document se compose de 5 sections. La première permet de définir les types de données manipulées par le service. La balise contient en réalité un document XML Schema les décrivant. Encore une fois, nous voyons que tout a été misé sur les technologies existantes.

La section définit les messages supportés. Un message pourra correspondre à l'appel ou au retour d'une méthode, et se compose de parties (paramètres d'appel, valeur de retour). Le type de ces parties correspond à un type définit dans la première section. Le listing 2 montre deux messages qui seront utilisé pour décrire une méthode Java. Remarquez l'utilisation du namespace "xsd" (XML Schema) pour la définition des types de données.

Vient ensuite la section qui décrit les opérations proposées par le service, représentée par des éléments . Une opération est composée d'un message d'entrée et d'un message de sortie, correspondant à ceux décrit dans la section précédente. On pourra également définir des messages d'exception, optionnels, avec la balise . Le nom des opérations correspond aux méthodes Java du programme, tandis que le nom du se réfère au nom de la classe. Le listing 2 présente un exemple d'opération, reflétant la méthode getArticlesCount(String s) throws SOAPException.

Nous avons appris dans ce dossier que les Services Web sont liés à un protocole de transport. La quatrième section effectue cette liaison. Cette section commence toujours par la description du protocole de transport (HTTP, FTP.) employé. Ensuite, le document décrit le codage des données de chaque opération mise en place dans la section . C'est ici que nous pourrons décider si les données doivent se trouve dans l'en-tête ou le corps d'un message SOAP par exemple.

Malgré une abstraction exhaustive du document, une donnée importante manque encore, l'adresse à laquelle les opérations peuvent être invoquées. La balise s'associe à un afin de spécifier cette adresse.

<message name="getArticlesCountResponse">
  <part name="getArticlesCountReturn" type="xsd:int"/>
</ message>
<message name="getArticlesCountRequest">
  <part name="in0" type="xsd:string"/>
</message>
       
      
JextCopier dans Jext | Jext | Plugin Codegeek
<operation name="getArticlesCount" parameterOrder="in0">
  <input message="getArticlesCountRequest" />
  <output message=" getArticlesCountResponse" />
  < fault message="SOAPException" />
</wsdl:operation>
       
      
JextCopier dans Jext


par Romain Guy
romain.guy@jext.org
http://www.jext.org
Dernière mise à jour : 14/10/2006


Précédent  
  Services Web  
  Suivant

 
#ProgX©2005 Mathieu GINOD - Romain GUY - Erik LOUISE