XMLWSDL _
- WSDL signifie Web Services Description Language
- WSDL est utilisé pour décrire les services Web
- WSDL est écrit en XML
- WSDL est une recommandation du W3C du 26 juin 2007
Documents WSDL
Un document WSDL décrit un service Web. Il précise la localisation du service, et les modalités du service, à l'aide de ces éléments majeurs :
Element | Description |
---|---|
<types> | Defines the (XML Schema) data types used by the web service |
<message> | Defines the data elements for each operation |
<portType> | Describes the operations that can be performed and the messages involved. |
<binding> | Defines the protocol and data format for each port type |
La structure principale d'un document WSDL ressemble à ceci :
<definitions>
<types>
data type definitions........
</types>
<message>
definition of the data being communicated....
</message>
<portType>
set of operations......
</portType>
<binding>
protocol and data format specification....
</binding>
</definitions>
Exemple WSDL
Ceci est une fraction simplifiée d'un document WSDL :
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
Dans cet exemple, l' élément <portType> définit "glossaryTerms" comme nom d'un port et "getTerm" comme nom d'une opération .
L'opération "getTerm" a un message d'entrée appelé "getTermRequest" et un message de sortie appelé "getTermResponse".
Les éléments <message> définissent les parties de chaque message et les types de données associés.
L'élément <portType>
L'élément <portType> définit un service Web , les opérations pouvant être effectuées et les messages impliqués.
Le type de requête-réponse est le type d'opération le plus courant, mais WSDL définit quatre types :
Type | Definition |
---|---|
One-way | The operation can receive a message but will not return a response |
Request-response | The operation can receive a request and will return a response |
Solicit-response | The operation can send a request and will wait for a response |
Notification | The operation can send a message but will not wait for a response |
Fonctionnement unidirectionnel WSDL
Un exemple d'opération à sens unique :
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
Dans l'exemple ci-dessus, le portType "glossaryTerms" définit une opération unidirectionnelle appelée "setTerm".
L'opération "setTerm" permet l'entrée de nouveaux messages de termes de glossaire à l'aide d'un message "newTermValues" avec les paramètres d'entrée "term" et "value". Cependant, aucune sortie n'est définie pour l'opération.
Opération de requête-réponse WSDL
Un exemple d'opération requête-réponse :
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
Dans l'exemple ci-dessus, le portType "glossaryTerms" définit une opération de requête-réponse appelée "getTerm".
L'opération "getTerm" nécessite un message d'entrée appelé "getTermRequest" avec un paramètre appelé "term", et renverra un message de sortie appelé "getTermResponse" avec un paramètre appelé "value".
Liaison WSDL à SOAP
Les liaisons WSDL définissent le format de message et les détails du protocole pour un service Web.
Un exemple d'opération requête-réponse :
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
<binding type="glossaryTerms" name="b1">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation
soapAction="http://example.com/getTerm"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
L' élément de liaison a deux attributs - name et type.
L'attribut name (vous pouvez utiliser le nom de votre choix) définit le nom de la liaison, et l'attribut type pointe vers le port de la liaison, dans ce cas le port "glossaryTerms".
L' élément soap:binding a deux attributs - style et transport.
L'attribut style peut être "rpc" ou "document". Dans ce cas, nous utilisons document. L'attribut transport définit le protocole SOAP à utiliser. Dans ce cas, nous utilisons HTTP.
L' élément operation définit chaque opération que le portType expose.
Pour chaque opération, l'action SOAP correspondante doit être définie. Vous devez également spécifier comment l'entrée et la sortie sont codées. Dans ce cas, nous utilisons "littéral".