UP | HOME

Services Web WS* - WSDL pour les interfaces et SOAP pour les messages

Table of Contents

1 WSDL - Web Services Description Language

Version 1.0 pour CXF, version 2.0 (la dernière) en cours d'implémentation

Document WSDL : document XML appelé contrat

1.1 Structure

medias/soc_wsdl.png

<definitions>
<types>
  définition des types de données ...
</types>
<message>
  déclaration des messages ...
  (utilisation des types de données)
</message>
<!-- ... -->
<portType>
  déclaration d'une interface pour un port ...
  <operation>
    déclaration d'une opération de l'interface ...
    (utilisation des déclarations de messages)
  </operation>
  <!-- ... -->
</portType>
<!-- ... -->
<binding>
  définition d'une liaison entre interface de port et protocole de
  communication ...
</binding>
<!-- ... -->
<service>
  déclaration d'un service concret ...
  <port>
    définition d'un port ...
    (utilisation d'une liaison)
  </port>
  <!-- ... -->
</service>
<!-- ... -->
</definitions>

1.2 Racine

  • élément wsdl:definitions
  • nom du service web (attribut name)
  • espace de nommage cible pour les entités définies dans le document WSDL (attribut targetnamespace)
  • noms d'usage pour des espaces utiles de nommage :
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:tns="http://soap/" <!-- target namespace -->
    

1.3 Types de données

  • élément wsdl:types
  • définition d'un schéma pour les données, fréquemment par importation d'un fichier définissant des éléments avec leurs types
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
      <import namespace="http://soap/" schemaLocation="automate_schema1.xsd"/>
    </schema>
    

1.4 Déclaration des messages

  • un élément wsdl:message (avec un attribut name) pour chaque déclaration de message
  • un ou plusieurs éléments wsdl:part (avec un attribut name pour l'identification et un attribut element pour indiquer un élément du schéma) (pour CXF : un seul élément wsdl:part de nom parameters)

1.5 Interface de ports

Les déclarations des opérations sont regroupées dans des interfaces, appelées types de port.

  • par interface, un élément wsdl:portType (avec un attribut name pour nommer l'interface) regroupant un ou plusieurs éléments wsdl:operation (avec un attribut name pour nommer l'opération) déclarant chacun une opération
  • élément wsdl:operation déclarant son type par une combinaison des éléments wsdl:input et wsdl:output, et possiblement un élément wsdl:fault (pour signaler une faute), chaque sous-élément étant spécifié par un attribut optionnel name et un attribut message indiquant le type du message

    Revue des quatre combinaisons possibles :

    • procédure (one-way) : wsdl:input seul
    • requête-réponse : wsdl:input suivi de wsdl:ouput
    • sollicitation-réponse : wsdl:output suivi de wsdl:input
    • alerte : wsdl:output seul

1.6 Liaison

Une liaison relie une interface de port appartenant à la couche logique à un type de communication particulier, SOAP généralement, HTTP possiblement, ou autre, appartenant à la couche physique : elle concrétise physiquement la définition logique de l'interface.

  • élément wsdl:binding avec un attribut name pour nommer la liaison et un attribut type pour l'interface du port
  • pour chaque opération de l'interface du port, un élément wsdl:operation avec un attribut name pour identifier l'opération et des sous-éléments wsdl:input, wsdl:output et wsdl:fault correspondant au type de l'opération
  • spécification de la liaison en attachant des sous-éléments provenant d'autres espaces de nommage aux éléments précédents
  • liaison SOAP

    espace de nommage "http://schemas.xmlsoap.org/wsdl/soap/" (nommé soap ici)

    • sous wsdl:binding : élément soap:binding avec l’attribut transport indiquant le protocole utilisé pour l’échange des messages SOAP, (en général HTTP précisé par l’URI "http://schemas.xmlsoap.org/soap/http") et l’attribut style précisant le mode par défaut de représentation du corps du message SOAP rpc ou document (cas de CXF)))
    • sous wsdl:operation : élément soap:operation avec l'attribut style raffinant celui hérité de soap:binding et l'attribut soapAction donnant l'intention (cas de CXF : fixé à "", pour signifier que l'intention est dans l'URI du service)
    • sous wsdl:input, wsdl:output ou wsdl:fault : élément soap:body avec l'attribut use valant literal pour compléter le mode

1.7 Service

Ensemble de ports spécifiés par une liaison (interface reliée à un protocole) et une adresse URI

  • service : élément wsdl:service avec un attribut name pour le nommer
  • pour chaque port : sous-élément wsdl:port avec un attribut name pour le nommer, un attribut binding spécifiant la liaison et dans le cas SOAP, et contenant un sous-élément soap:address précisant l'adresse URI du port par son attribut location

2 SOAP

Protocole pour l'échange de messages

  • v1.0 en 1998
  • v1.2 en 2003

Protocole de transport : HTTP, SMTP, etc.

Intérêt de HTTP pour le transport : ubiquité (passage des firewalls)

2.1 Structure

<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" >
  <soap:Header>
     contenu xml ...
  </soap:Header>
  <soap:Body>
     contenu xml ...
  </soap:Body>
</soap:Envelope>
  • en-tête : élément soap:Header contenant des informations sur le message (identité, signature, etc.)
  • corps : élément soap:Body contenant le message, un document XML
    • 4 modes de représentation pour le message : (document + rpc) x (literal + encoded)
    • pour les services (WS-Interoperability Basic Profile) : deux modes
      • document x literal : document XML conforme à un schéma quelconque
      • rpc x literal : document XML conforme à un schéma particulier représentant une commande (fonction accompagnée de ses arguments ou de son résultat)
    • avec CXF : un mode document x literal (et pas d'en-tête) avec un schéma représentant des commandes

Last Updated 2016-01-06T07:35+0100. Comments or questions: Send a mail.