WebServices / SOAP

Les spécifications WebService

Web Service Description Language

WSDL (Web Service Description Language) est un standard en cours de développement par le W3C. La version 1.1 du standard a été publiée sous la forme d'une note, mais elle n'a jamais été finalisée par le W3C. Cependant, elle a été employée dans beaucoup d'implémentations WebServices et c'est la raison pour laquelle c'est cette version qui est utilisée dans le profil basique.

WSDL est en fait un langage de description basé sur XML et qui permet de décrire:

Pour ce faire, le langage définit 4 éléments principaux qui sont:

Description d'un simple Web Service glossaire:

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <!-- Définition d'un message getTermRequest contenant une chaîne de caractères term -->
  <wsdl:message name="getTermRequest">
    <wsdl:part name="term" type="xs:string"/>
  </wsdl:message>

  <!-- Définition d'un message getTermResponse contenant une chaîne de caractères value -->
  <wsdl:message name="getTermResponse">
    <wsdl:part name="value" type="xs:string"/>
  </wsdl:message>

  <!-- Description du WebService glossaryTerms contenant une opération (action) qui prend en
       entrée un message getTermRequest et retourne un message getTermResponse -->
  <wsdl:portType name="glossaryTerms">
    <wsdl:operation name="getTerm">
      <!-- On peut rajouter une description textuelle de l'opération -->
      <wsdl:documentation .... />
      <wsdl:input message="getTermRequest"/>
      <wsdl:output message="getTermResponse"/>
    </wsdl:operation>
  </wsdl:portType>

  <!-- Association de l’accès SOAP pour le WebService glossaryTerms -->
  <wsdl:binding type="glossaryTerms" name="b1">
  <soap:binding style="document"
   transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation>
      <soap:operation
       soapAction="http://www.example.com/getTerm"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
</wsdl:definitions>

Ici, on crée d'abord deux messages (getTermRequest/getTermResponse) qui seront utilisés pour les paramètres d'entrée et de sortie d'une action de recherche dans un glossaire (getTerm). On définit ensuite le WebService de glossaire (glossaryTerms) en spécifiant les actions qu'il est capable d'effectuer (uniquement l'action getTerm ici). On notera ici que la seule action spécifiée est une action de type requête/réponse (il en existe 3 autres types prévus par WSDL).

Enfin, on associe le WebService avec un protocole d'accès. Ici, on utilise SOAP en conjonction avec HTTP (attribut style à la valeur "document", en opposition à la valeur "rpc"). Pour chaque opération définie dans le WebService auparavant, on associe l'URL d'accès à cette opération, ainsi que la façon dont les paramètres d'entrée et de sortie de l'opération sont codés (ici, de manière claire [literal] en opposition à une manière codée [encoded]).

Universal Description Discovery & Integration

UDDI (Universal Description Discovery and Integration) est un standard adopté dans sa version 2 par l'organisme OASIS (Organization for the Advancement of Structured Information Standards) en 2001.

Le but de ce standard est de fournir des fonctionnalité d'annuaires des WebServices afin de pouvoir les découvrir et les utiliser via un mécanisme centralisé pouvant regrouper les WebServices de plusieurs entreprises. Il repose sur SOAP pour sa partie d'échange de messages, et sur WSDL pour sa partir de description des services de l'annuaire. Il existe 3 types d'annuaire définis:

Il n'est pas utile de comprendre de manière technique le fonctionnement du protocole UDDI, car cela n'apporte que peu de chose dans la compréhension du fonctionnement des WebServices. Il est plus intéressant de voir comment les annuaires UDDI s'intègrent dans un environnement WebService, comme le montre l'exemple suivant:

Architecture typique d'un WebService

Ici, un fournisseur WebService (Service Provider) s'inscrit initialement auprès de l'annuaire UDDI (Service Broker) en se servant du protocole WSDL pour décrire ses fonctionnalités. Une fois cette étape effectuer, n'importe quel client, comme celui présenté sur le dessin (Service Requester) peut interroger l'annuaire UDDI afin de trouver le fournisseur WebService adéquate pour exécuter une action voulue. Une fois le WebService trouvé, le client n'a plus qu'à lui envoyer la demande d'exécution de l'action à l'aide du protocole SOAP afin que celui-ci s'y emploi et envoie la réponse au client.
Cela donne alors une liaison totalement indépendante et dynamique entre les clients et les fournisseurs de services Web.