TUTORIEL XML 
SOAP, XML-RPC et REST : différences et intérêts
Trois méthodes se partagent le terrain de la transmission de données par les services Web. JDN Développeurs décrypte leur utilisation. (05/11/2004)
  1. Présentation - XML-RPC
2. SOAP - REST - Conclusion

  Forum

Réagissez dans les forums de JDN Développeurs

Les services Web sont à la conquête du monde : outre les trois grands services Web publiquement accessibles par API (Google, Amazon et eBay), un nombre croissant d'entreprises choisissent de faire transiter leurs données entre elles ou en interne via des services XML. En définitive, l'interopérabilité des applications Web se construit via XML… Trois "méthodes" sont couramment utilisées pour ces échanges de données : SOAP, XML-RPC et REST. La confusion régnant chez les développeurs entre ces trois méthodes, cet article tente d'en expliquer les différences.

Présentation générale
Il nous faut tout d'abord distinguer ce qui n'est pas comparable : parmi ces méthodes, nous avons d'un côté SOAP et XML-RPC et de l'autre REST. En effet, si ces deux premiers sont des technologies XML de transmission de données, la dernière ne fait que nommer un usage des principes du Web (plus précisément, les possibilités du protocole HTTP).
SOAP et XML-RPC sont donc issus du même moule (à plus d'un titre) ; ils se proposent de transporter l'information XML au travers d'une encapsulation XML. REST, de son côté, est en fait une philosophie du Web qui prône l'usage de l'existant. La différence est fondamentale, et montre que l'on ne peut directement comparer les trois méthodes de diffusion des données, mais tout au plus comparer les deux premières dans leurs différences, et mentionner la troisième comme une approche tout aussi (sinon plus selon les cas) viable.

Il existe deux types de transactions lors des interactions de services Web : la simple requête, qui renvoie des données, et la demande de traitement, qui envoie des données et en récupère d'autres en retour. Ces données sont transmises au format XML. Les trois méthodes dont nous parlons se chargent d'acheminer ces documents XML.

Les protocoles RPC

RPC signifie Remote Procedure Call, ou Appel de Procédure Distante. Les procédures locales sont toutes celles qu'un système d'exploitation est amené à lancer pour connaître l'état de ses différentes ressources (mémoire, disque, position de la souris…). Les procédures distantes sont les fonctions résidant sur d'autres systèmes. Leur appel correspond aux services Web, et sont transmis via des protocoles comme SOAP et XML-RPC.
De fait, XML-RPC est à la fois le nom d'une technologie d'échange de données XML via réseau, mais également une dénomination englobant tous ces protocoles d'échange XML. SOAP est par exemple un protocole de type XML-RPC (requête de documents XML par appel de procédures distantes).

Ces deux technologies, sont issues du même moule : le travail de Dave Winer, Don Box et d'autres chez Microsoft pour SOAP, et le travail de Dave Winer au sein de sa société UserLand pour XML-RPC. XML-RPC a été diffusé par Dave Winer lorsqu'il estimait que les travaux sur SOAP n'avançaient pas assez vite. Les deux protocoles ont ensuite évolué séparément, mais partagent donc tant leurs créateurs que leurs racines, et l'on n'y trouve certaines similitudes.

XML-RPC
Le protocole XML-RPC peut donc être pris comme l'ancêtre de SOAP : il a en tous cas évolué d'une première version de SOAP, et modifié pour correspondre à la vision de Dave Winer.

Voici un exemple de requête proposée par le service en ligne Flickr.com. Tous les exemples de cet article sont tirés du service Web proposé par ce site, ce qui nous permet de comparer les différents rendus...
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
  <methodName>flickr.echo</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>name</name>
            <value><string>value</string></value>
          </member>
          <member>
            <name>name2</name>
            <value><string>value2</string></value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>

Et sa réponse :
<?xml version="1.0" encoding="utf-8" ?>
<methodResponse>
  <params>
    <param>
      <value>
        <string>
          <method>flickr.test.echo</method>
          <format>xmlrpc</format>
          <foo>bar</foo>
          <api_key>78ce850f064baa9e7fc7128794989563</api_key>
        </string>
      </value>
    </param>
  </params>
</methodResponse>

  1. Présentation - XML-RPC
2. SOAP - REST - Conclusion
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages