SOAP

Utiliser SOAP (Simple Object Access Protocol) via HTTP facilite la communication et évite les problèmes de proxys et pare-feu par rapport à des technologies plus anciennes.

SOAP est définit par le W3C pour pallier aux limitations de XML-RPC. http://www.w3.org/TR/SOAP/. SOAP réduit la verbosité des données.

SOAP est :

  • assez ouvert pour s’adapter à différents protocoles de transport
  • indépendant de la plate-forme
  • indépendant du langage
  • extensible

Inconvénients

En raison du nombre d’informations qu’impose le format XML, SOAP peut alourdir considérablement les échanges par rapport à des middlewares comme CORBA ou ICE, ce qui n’est pas forcément un handicap quand les volumes de données transités par SOAP sont faibles par rapport au volume total de données échangées.

SOAP décrit la manière dont les applications doivent communiquer entre elles, certains considèrent que le couplage reste fort entre le serveur et ses clients. Une modification de l’API implique ainsi une évolution côté client, contrairement à une architecture orientée ressources telle que REST.

Structure des Messages SOAP

Cet exemple montre les données pour une réservation de voyage exprimées dans un message SOAP.

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header>
<m:reservation xmlns:m="http://travelcompany.example.org/reservation"
env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
env:mustUnderstand="true">
<m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
<m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime>
</m:reservation>
<n:passenger xmlns:n="http://mycompany.example.com/employees"
env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
env:mustUnderstand="true">
<n:name>Åke Jógvan Øyvind</n:name>
</n:passenger>
</env:Header>
<env:Body>
<p:itinerary
xmlns:p="http://travelcompany.example.org/reservation/travel">
<p:departure>
<p:departing>New York</p:departing>
<p:arriving>Los Angeles</p:arriving>
<p:departureDate>2001-12-14</p:departureDate>
<p:departureTime>late afternoon</p:departureTime>
<p:seatPreference>aisle</p:seatPreference>
</p:departure>
<p:return>
<p:departing>Los Angeles</p:departing>
<p:arriving>New York</p:arriving>
<p:departureDate>2001-12-20</p:departureDate>
<p:departureTime>mid-morning</p:departureTime>
<p:seatPreference/>
</p:return>
</p:itinerary>
<q:lodging
xmlns:q="http://travelcompany.example.org/reservation/hotels">
<q:preference>none</q:preference>
</q:lodging>
</env:Body>
</env:Envelope>

Représentation visuelle de ce même message SOAP

Documentation

https://fr.wikipedia.org/wiki/SOAP
https://www.w3.org/2002/07/soap-translation/soap12-part0.html

> Partager <