Nous devons définir ce qu'est un service web avant de dire quelles sont les différences entre le SOAP et le WSDL, ces deux éléments (SOAP et WSDL) étant des composants d'un service web.
La plupart des applications sont développées pour interagir avec les utilisateurs. L'utilisateur saisit ou recherche des données par le biais d'une interface et l'application répond ensuite à la saisie de l'utilisateur.
Un service Web fait plus ou moins la même chose, sauf qu'une application de service Web ne communique que de machine à machine ou d'application à application. Il n'y a souvent aucune interaction directe avec l'utilisateur.
Un service Web est essentiellement une collection de protocoles ouverts utilisés pour échanger des données entre applications. L'utilisation de protocoles ouverts permet aux services Web d'être indépendants de la plate-forme. Les logiciels écrits dans différents langages de programmation et fonctionnant sur différentes plates-formes peuvent utiliser les services Web pour échanger des données sur des réseaux informatiques tels que l'Internet. En d'autres termes, les applications Windows peuvent dialoguer avec les applications PHP, Java et Perl et bien d'autres, ce qui ne serait pas possible dans des circonstances normales.
Comment fonctionnent les services Web ?
Comme les différentes applications sont écrites dans des langages de programmation différents, elles ne peuvent souvent pas communiquer entre elles. Un service Web permet cette communication en utilisant une combinaison de protocoles et de normes ouverts, principalement XML, SOAP et WSDL. Un service Web utilise XML pour baliser les données, SOAP pour transférer un message et enfin WSDL pour décrire la disponibilité des services. Examinons ces trois principaux composants d'une application de service Web.
Protocole d'accès simple aux objets (SOAP)
Le protocole SOAP (Simple Object Access Protocol) est un protocole permettant d'envoyer et de recevoir des messages entre des applications sans être confronté à des problèmes d'interopérabilité (l'interopérabilité signifiant que la plate-forme sur laquelle un service Web est exécuté n'a plus d'importance). Un autre protocole qui a une fonction similaire est le HTTP. Il est utilisé pour accéder à des pages Web ou pour surfer sur le Net. Grâce à HTTP, vous n'avez pas à vous soucier du type de serveur Web (Apache, IIS ou autre) qui vous sert les pages que vous consultez, ni du fait que ces pages ont été créées en ASP.NET ou en HTML.
Comme SOAP est utilisé à la fois pour les demandes et les réponses, son contenu varie légèrement en fonction de son objectif.
Voici un exemple de message de demande et de réponse SOAP
Demande SOAP :
POST /InStock HTTP/1.1
Host: www.bookshop.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.bookshop.org/prices">
<m:GetBookPrice>
<m:BookName>The Fleamarket</m:BookName>
</m:GetBookPrice>
</soap:Body>
</soap:Envelope>
Réponse SOAP :
POST /InStock HTTP/1.1
Host: www.bookshop.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.bookshop.org/prices">
<m:GetBookPriceResponse>
<m: Price>10.95</m: Price>
</m:GetBookPriceResponse>
</soap:Body>
</soap:Envelope>
Bien que les deux messages se ressemblent, ils appliquent des méthodes différentes. Par exemple, si vous regardez les exemples ci-dessus, vous pouvez voir que le message de demande utilise la fonction GetBookPrice
pour obtenir le prix du livre. La réponse est effectuée par le GetBookPriceResponse
qui sera le message que vous verrez en tant que "demandeur". Vous pouvez également constater que les messages sont composés à l'aide de XML.
Langage de description des services Web ou WSDL
WSDL est un document qui décrit un service Web et vous indique également comment accéder à ses méthodes et les utiliser.
WSDL s'occupe de savoir comment connaître les méthodes disponibles dans un service Web que vous rencontrez par hasard sur Internet.
Jetez un coup d'œil à un exemple de fichier WSDL :
<?xml version="1.0" encoding="UTF-8"?>
<definitions name ="DayOfWeek"
targetNamespace="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl"
xmlns:tns="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="DayOfWeekInput">
<part name="date" type="xsd:date"/>
</message>
<message name="DayOfWeekResponse">
<part name="dayOfWeek" type="xsd:string"/>
</message>
<portType name="DayOfWeekPortType">
<operation name="GetDayOfWeek">
<input message="tns:DayOfWeekInput"/>
<output message="tns:DayOfWeekResponse"/>
</operation>
</portType>
<binding name="DayOfWeekBinding" type="tns:DayOfWeekPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetDayOfWeek">
<soap:operation soapAction="getdayofweek"/>
<input>
<soap:body use="encoded"
namespace="http://www.roguewave.com/soapworx/examples"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.roguewave.com/soapworx/examples"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="DayOfWeekService" >
<documentation>
Returns the day-of-week name for a given date
</documentation>
<port name="DayOfWeekPort" binding="tns:DayOfWeekBinding">
<soap:address location="http://localhost:8090/dayofweek/DayOfWeek"/>
</port>
</service>
</definitions>
Les principales choses à retenir d'un fichier WSDL sont qu'il vous fournit :
-
Une description d'un service Web
-
Les méthodes qu'un service Web utilise et les paramètres qu'il prend
-
Un moyen de localiser les services Web