inseadima

Bienvenue Invité sur INSEA DIMA.

Actualité de l’ Institut National de Statistique et d'Economie Appliquée {INSEA}.



Rejoignez le forum, c’est rapide et facile

inseadima

Bienvenue Invité sur INSEA DIMA.

Actualité de l’ Institut National de Statistique et d'Economie Appliquée {INSEA}.

inseadima
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -28%
Brandt LVE127J – Lave-vaisselle encastrable 12 ...
Voir le deal
279.99 €

Introduction à WSDL

Aller en bas

Introduction à WSDL Empty Introduction à WSDL

Message par s.souhail Mar 30 Jan 2007 - 17:00

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.


Exemple
Voici un exemple type de fichier WSDL 1.1:
<xml>
<definitions>
<message>
<part>
</message>
<message>
<part>
</message>
<portType>
<operation>
<input>
<output>
</operation>
</portType>
</definitions>



Pas à pas
Nous allons construire une petite application WSDL, en définissant plusieurs morceaux et en utilisant la fonction import pour les lier.
Déclaration de portType:
Un port est simplement une suite d'opérations. De nombreux langages de programmation appellent cela une bibliothèque, un module ou une classe, mais dans le monde de l'échange de messages, les points de connexion sont des ports, et la définition abstraite d'un port est appellée Type de Port.
Ici, nous créons la définition abstraite d'une procédure helloWorld, en WSDL.
(Fichier porttype.wsdl)
<xml>
<definitions>

<types>

<message>
<part>
</message>

<message>
<part>
</message>

<portType>
<operation>
<input>
<output>
</operation>
</portType>
</definitions>


En clair, nous définissons une opération helloWorld pour le port tutoriel de l'espace de nom uri:perso. Cette opération à un message d'entrée appellé Requete et un message de sortie appellé Reponse. L'interface n'est pas typée pour garder l'exemple simple et pour montrer que cela peut être fait de cette manière. Les types additionnels seront définis dans l'élément vide <types>.
Rattachement du port à SOAP:
Les types de ports sont indépendants du protocole. Ici, nous utiliserons des requêtes SOAP de type RPC via HTTP avec un encodage SOAP:
(fichier binding.wsdl)
<xml>
<definitions>

<import>

<binding>
<soap>
<operation>
<soap>
<input>
<soap>
</input>
<output>
<soap>
</output>
</operation>
</binding>
</definitions>


La première chose que fait cette définition est d'importer le type de port défini précédemment. Puis il défini une liaison SOAP à l'aide d'HTTP avec le style RPC. Les corps des messages d'entrée et de sortie sont définis avec le bon encodage et espace de nom.
Définition du service:
<xml>
<definitions>

<import>

<service>
<documentation>
Explication complète du fonctionnement du service...
</documentation>

<port>
<soap>
</port>
</service>
</definitions>


Nous importons une fois de plus le fichier précédemment créé, puis un service est défini avec une seule occurence de type abstrait tutorielPort, qui est lié à la liaison tutorielSOAP. Enfin, on donne l'information sur l'URL du point final (endpoint).
Notez bien que si on ne trouve qu'un seul élément documentation dans notre documentation, il faudra normalement y avoir pour chaque élément...
L'implémentation est aussi relativement aisée, avec PHP, .NET ou autre.
Implémentations en ligne
Voici enfin un exemple d'application WSDL 1.1: une méthode de récupération des données de Yahoo! Finance au format XML, en provenance de XMLToday. Bien entendu, ce n'est ici qu'un exemple d'application, et nous déconseillons l'utilisation de données en provencnce de Yahoo! sans leur accord...

De son coté, Google propose un kit complet pour accéder à son API, dont un fichier WSDL.
Ces exemples sont longs et compliqués, certes, mais il faut noter que dans la plupart des cas, les documents WSDL sont générés par des outils plutôt que rédigés à la main.
Conclusion
La complétion du standard WSDL est pour un bonne part crucial dans la propagation des Web Services: cette vision indépendante du système facilitera l'interopérabilité, à la fois en faisant la liaison entre technologies middleware telles que CORBA, J2EE ou DCOM, et facilitant l'implementation client/serveur par la possibilité donnée aux développeurs d'utiliser le meilleur de chaque technologie
s.souhail
s.souhail
Administrateur
Administrateur

Masculin
Nombre de messages : 1053
Localisation : Île-de-France (Nanterre)
Date d'inscription : 23/10/2006

http://www.inseadima.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum