• Aucun résultat trouvé

Concepts de base

1.4 Le langage WSDL

Client SH1 SH2 SH3 Service Serveur Requête SOAP Réponse SOAP

Figure 1.8 – Exemple de gestionnaires SOAP

sont interposés entre les services et leurs clients et ils sont transparents vis-à-vis à la fois des services et des clients. Leur rôle est très souvent de fournir une fonctionnalité supplémentaire et basée sur le contenu des données présentes dans l’en-tête du message traité. Par exemple, un gestionnaire peut effectuer le décryptage de données cryptées dans le corps du message SOAP à partir de l’information sur l’algorithme à utiliser dans l’en-tête. Un service Web peut avoir plusieurs gestionnaires de messages installés. Dans l’exemple de la figure 1.8, trois gestionnaires SOAP (SH1, SH2 et SH3) sont déployés pour le service Web Service. Un gestionnaire installé pour un service Web reçoit les messages SOAP de toutes les requêtes adressées à ce service. Il effectue les traitements désirés sur ces messages et « pousse » les messages SOAP résultants vers le gestionnaire suivant de la chaîne de gestionnaires, ou vers le service cible s’il est le dernier de la chaîne. Dans cette direction, les messages SOAP sont dits entrants (inbound en anglais). De même, toutes les réponses envoyées par un service Web à un client passent par ses gestionnaires SOAP, mais dans le sens inverse des messages entrants. Les messages SOAP sont dits sortants (outbond en anglais). Le mécanisme des gestionnaires SOAP sont transparents pour les services et leurs clients.

1.4 Le langage WSDL

Le langage WSDL est une norme du W3C. Il en existe deux versions4 5 et leurs différences sont données dans la figure 1.9 (figure d’un document du wiki PyWPS6).

4. Standard WSDL 1.1 : www.w3.org/TR/wsdl 5. Standard WSDL 2.0 : www.w3.org/TR/wsdl20

WSDL 1.1 WSDL 2.0 References C oncr et e Se ct io n A bs tr act Se ct io n portType interface port service endpoint service binding binding output input operation output input operation message types definitions types description

Figure 1.9 – Structure d’un document WSDL selon deux versions

Une spécification WSDL est un document XML qui décrit en détail l’interface d’un ou plusieurs services Web. Un service Web est décrit comme un ensemble d’opéra-tions liées et accessibles sur le réseau. Cette description inclut les types de données échangées avec les clients des services ainsi que le protocole d’encodage de ces données. Un document WSDL distingue les aspects abstrait et concret de la description des services Web. La partie abstraite de la définition (version 1.1 de la norme) comprend la définition de types (simples, complexes ou éléments XML), des messages construits sur ces types et des opérations utilisant ces messages pour les types d’information reçue ou envoyée. Pour compléter la description abstraite des services, ce langage permet la définition de types de port (port types en anglais) qui rassemblent une ou plusieurs opérations précédemment définies. Cette définition abstraite correspond à l’interface d’une classe dans un langage comme C++. La définition concrète d’un

1.4. Le langage WSDL

1 <definitions name="Filter" xmlns=".../wsdl/"

xmlns:xsd=".../XMLSchema" xmlns:soap=".../soap/" xmlns:fx=".../Filter"> 2

3 <types>

4 <xsd:schema targetNamespace="http://gril.udes.ca/astd/wsdl/Filter"> 5 <xsd:import schemaLocation="Filter.xsd" namespace="..."/>

6 </xsd:schema> 7 </types>

8 <message name="ARRequest">

9 <part name="payload" element="fx:ARRequestType" /> 10 </message>

11 <message name="ARResponse">

12 <part name="result" element="fx:ARResponseType" /> 13 </message>

14 <portType name="FilterPortType">

15 <operation name="AuthorizationRequest"> 16 <input name="inputAR" message="ARRequest"/> 17 <output name="outputAR" message="ARResponse"/> 18 </operation>

19 </portType> 20

21 <binding name="FilterBinding" type="FilterPortType"> 22 <soap:binding style="document"

transport="http://schemas.xmlsoap.org/soap/http"/> 23 <operation name="AuthorizationRequest">

24 <soap:operation

soapAction="http://.../Filter_AuthorizationRequest"/> 25 <input name="inputAR"><soap:body use="literal"/></input> 26 <output name="outputAR"><soap:body use="literal"/></output> 27 </operation>

28 </binding>

29 <service name="FilterService">

30 <port name="FilterPort" binding="FilterBinding"> 31 <soap:address

location="http://192.168.1.1:8080/ode/processes/Filter_Service"/> 32 </port>

33 </service> 34 </definitions>

Programme 1.6 – Extrait d’un document WSDL

service introduit deux éléments concrets. Elle permet de définir pour chaque type de port, l’encodage des messages reçus ou envoyés pour les opérations de ce type de port ; cette définition utilise l’élément binding. La définition concrète se termine avec la définition des points d’accès sur le réseau au service. L’élément service est utilisé et précise à la fois l’adresse et le protocole de transport sur le réseau.

Dans le programme 1.6, les lignes 3 à 19 constituent la définition abstraite, dans la version WSDL 1.1 de la norme, du service FilterService (ligne 29). À ces lignes, les messages ARRequest et ARResponse sont définis chacun par un seul élément

part, mais il est possible d’en avoir plus d’un. Les types des parties (élément part) des messages sont définis entre les éléments types. Dans le cas de l’exemple du pro-gramme 1.6, les types sont définis dans un document XSD importé à la ligne 5. Le ser-vice décrit par le document WSDL comporte l’opération AuthorizationRequest définie aux lignes 15 à 18. La définition concrète du service intervient aux lignes 21 à 33. La ligne 22 indique que les échanges avec le service peuvent se faire par des messages SOAP et la ligne 31 précise l’adresse pour accéder au service ainsi que le protocole HTTP comme protocole de transport réseau.