Nous devons définir ce qu'est un service Web avant de dire quelle est la différence entre SOAP et WSDL où les deux (SOAP et WSDL) sont des composants d'un service Web
La plupart des applications sont développées pour interagir avec les utilisateurs, l'utilisateur entre ou recherche des données via une interface et l'application répond alors à l'entrée de l'utilisateur.
Un service Web fait plus ou moins la même chose sauf qu'une application de service Web ne communique que d'une machine à l'autre ou d'une application à l'autre. Il n'y a souvent pas d'interaction directe avec l'utilisateur.
Un service Web est essentiellement un ensemble 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 qui sont écrits dans différents langages de programmation et qui s'exécutent sur différentes plates-formes peuvent utiliser des services Web pour échanger des données sur des réseaux informatiques tels qu'Internet. En d'autres termes, les applications Windows peuvent communiquer avec les applications PHP, Java et Perl et bien d'autres, ce qui dans des circonstances normales ne serait pas possible.
Comment fonctionnent les services Web?
Étant donné que différentes applications sont écrites dans différents langages de programmation, elles ne peuvent souvent pas communiquer entre elles. Un service Web permet cette communication en utilisant une combinaison de protocoles ouverts et de normes, 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. Jetons un coup d'œil à ces trois composants principaux d'une application de service Web.
Protocole d'accès aux objets simple (SOAP)
Le protocole d'accès à un objet simple ou SOAP est un protocole permettant d'envoyer et de recevoir des messages entre applications sans rencontrer de problèmes d'interopérabilité (l'interopérabilité signifie que la plate-forme sur laquelle un service Web s'exécute devient non pertinente). Un autre protocole qui a une fonction similaire est HTTP. Il est utilisé pour accéder aux pages Web ou pour surfer sur Internet. HTTP garantit que vous n'avez pas à vous soucier du type de serveur Web - qu'il s'agisse d'Apache, d'IIS ou de tout autre - vous sert les pages que vous consultez ou si les pages que vous affichez ont été créées en ASP.NET ou HTML.
Comme SOAP est utilisé à la fois pour demander et répondre, son contenu varie légèrement en fonction de son objectif.
Vous trouverez ci-dessous un exemple de requête SOAP et de message de réponse
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 utilisent des méthodes différentes. Par exemple, en regardant les exemples ci-dessus, vous pouvez voir que le message de demande utilise la GetBookPrice
méthode pour obtenir le prix du livre. La réponse est effectuée par leGetBookPriceResponse
méthode, qui va être le message que vous verrez en tant que "demandeur". Vous pouvez également voir que les messages sont composés en utilisant XML.
Langage de description de services Web ou WSDL
WSDL est un document qui décrit un service Web et vous indique également comment accéder et utiliser ses méthodes.
WSDL se charge de savoir comment savoir quelles méthodes sont disponibles dans un service Web que vous rencontrez sur Internet.
Jetez un œ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 à propos d'un fichier WSDL sont qu'il vous fournit:
Une description d'un service Web
Les méthodes utilisées par un service Web et les paramètres qu'il prend
Un moyen de localiser les services Web