Présentation
Avec la publication cet été, par le W3C, du document
de travail pour WSDL 1.2, et donc le passage pour cette norme
du stade de proposition de la part de Microsoft, IBM et Ariba (WSDL
1.1) à celui de "norme W3C en cours de finalisation",
est venu le temps d'étudier plus profondément ce nouveau
format appellé à renouveller la manière dont
fonctionnent les Web Services.
C'est en effet
de Web Services qu'il s'agit: le WSDL (Web Services Description
Language) est, comme son nom l'indique, un langage de description
de Web Services, au format XML. Il permet de séparer la description
des fonctionnalités abstraites offertes par un service, des
détails concrets d'une description de service, tels que "comment"
et "où" cette fonctionnalité est proposée.
C'est donc un langage décrivant les fonctionnalités
abstraites d'un service ainsi que l'architecture décrivant
les détails concrets de la description de service.
En clair, il définit, de manière abstraite et indépendante du
langage, l'ensemble des opérations et des messages qui peuvent être
transmis vers et depuis un service web donné.
Le WSDL décrit quatre ensembles de données importants:
- information d'interface décrivant toutes les fonctions
disponibles publiquement,
- information de type de donnée pour toutes les requêtes
de message et requêtes de réponse,
- information de liaison sur le protocol de transport utilisé,
- information d'adresse pour localiser le service spécifié.
Une fois qu'un
Web Services est développé, il faut publier sa description
et faire un lien vers elle dans un catalogue UDDI
(Universal Description, Discovery and Integration), de sorte
que les utilisateurs potentiels peuvent le trouver. Quand un utilisateurs
souhaite utiliser le service, il fait une demande de son fichier
WSDL afin de connaître son emplacement, les appels de fonctions
et comment y accéder. A partir de cela, il peut composer,
par exemple, une requête SOAP (Simple Object Access Protocol)
vers l'ordinateur du service.
Tout ce parcours peut évidemment être automatisé
à l'aide d'outils reconnaissant WSDL, et permet ainsi d'intégrer
de nouveaux services pratiquement sans devoir entrer de nouveau
code.
WSDL est donc
conçu pour être la pierre d'angle de l'édifice
Web Services, avec un langage commun pour décrire les
services et une plateforme pour intégrer automatiquement
ces services.
Le format WSDL
Un document WSDL, spécifié comme InfoSet
XML, défini une suite de descriptions de composants.
Le fichier WSDL est principalement composé de 7 élements,
avec d'autres éléments optionnels:
- definitions: élément
racine du document, il donne le nom du service, déclare
les espaces de noms utilisés, et contient les éléments
du service. Obligatoire.
- message: décrit un message
unique, que ce soit une message de requête seul ou un
message de réponse seul. L'élément défini
le nom du message et peut contenir (ou pas) des éléments
part, qui font référence
aux paramètres du message ou aux valeurs retournées
par le message. Définition abstraite.
- portType: combine plusieurs
éléments message
pour composer une opération. Chaque opération se réfère à
un message en entrée et à des messages en sortie. Définition
abstraite.
- types: décrit tous les
types de données utilisés entre le client et le
serveur. WSDL n'est pas exclusivement lié à un système
spécifique de typage, mais utilise par défaut le spécification
XML Schema. Définition abstraite.
- binding: décrit les
spécifications concrètes de la manière
dont le service sera implémenté: protocole de communication
et format des données pour les opérations et messages définis par
un type de port particulier. WSDL possède des extensions
internes pour définir des services SOAP; de fait, les informations
spécifiques à SOAP se retrouvent dans cet élément.
Définition concrète.
- service: défini les
adresses permettant d'invoquer le service donné, ce qui
sert à regrouper un ensemble de ports reliés. La plupart du temps,
c'est une URL invoquant un service SOAP. Définition concrète.
- import: permet de séparer
les différents éléments d'une définition
de service en plusieurs documents indépendants, qui peuvent
être importés si besoin est. Cela permet d'écrire
des définitions plus claires, en séparant les définitions
selon leurs niveaux d'abstraction, et de maximiser la réutilisabilité.
- serviceType: utilisé pour
définir une description de composants serviceType.
- documentation: contient de la
documentation lisible. Optionnel.
L'élément portType
est l'un des plus importants: il défini un service, les opérations
qu'il peut effectuer et les messages qu'il comprend.
Conseils de création
Pour un maximum d'interopérabilité tout en conservant
une certaine flexibilité, voici quelques conseils pour créer
son document WSDL:
1) Documentez toujours votre fichier WSDL, à la fois
par le biais de la balise documentation,
et en fournissant de la documentation dans un fichier externe au
document WSDL.
2) Utilisez la Recommendation 2001 de XML Schema. On peut
mettre beaucoup de choses dans l'élément types
d'un document WSDL: Relax NG, une ancienne version XML Schema ou
toute autre chose, mais la méthode la plus sûre et
interopérable est la version 2001 de Schema.
3) Utilisez l'élément type: même si les
messages ont un type de données simple, il faut quand même
utiliser l'élément types
pour tout décrire. Dans tous les cas, ne faites pas référence
aux types dans l'élément message.
4) Divisez votre document WSDL en plusieurs morceaux en tirant
parti de la fonction import: créez
un fichier pour l'aspect abstrait de WSDL, un autre pour les liaisons
et un dernier pour les éléments de service et les
ports.
5) Débutez la conception de votre service par WSDL,
et conservez son interface inchangée de bout en bout, même
si le WSDL est généré par des outils. Cela
implique que vous devrez souvent comparer votre code à WSDL.
Page 1 | 2
|