close

XML-RPC

Aller à la navigation Aller à la recherche

XML-RPC ( Remote Procedure Call ) est un protocole d'appel de procédure à distance qui utilise XML pour coder les données et HTTP comme protocole de transmission des messages. [ 1 ]

C'est un protocole très simple car il ne définit que quelques types de données et commandes utiles, ainsi qu'une courte description complète. La simplicité de XML-RPC contraste avec la plupart des protocoles RPC qui ont une documentation complète et nécessitent un support logiciel considérable pour être utilisés.

Il a été créé par Dave Winer de la société UserLand Software en association avec Microsoft en 1998 . Considérant que Microsoft était très simple, il a décidé d'y ajouter des fonctionnalités, après quoi, après plusieurs étapes de développement, le standard a cessé d'être simple et est devenu ce qu'on appelle actuellement SOAP . Une différence fondamentale est que dans les procédures SOAP les paramètres ont un nom et leur ordre n'a pas d'importance, ce qui n'est pas le cas dans XML-RPC . [ 2 ]

Types de données

Selon la spécification XML-RPC , [ 3 ] les principaux types de données sont :

nom Exemples de balises La description
déployer
 <array> 
   <data> 
     <value><i4> 1404 </i4></value> 
     <value><string> Quelque chose ici </string></value> 
     <value><i4> 1 </i4></ valeur> 
   </data> 
 </array>
Tableau de valeurs, sans stockage de clés
base64
 <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64>
Données binaires encodées en base 64
booléen
 <booléen> 1 </booléen>
Valeur logique (0 ou 1)
date/heure
 <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601>
Jour et heure
double
 <double> -12.53 </double>
Nombre à virgule flottante double précision
entier
 <i4> 42 </i4>

Soit

 <int> 42 </int>
Entier
chaîne de caractères
 <string> Bonjour tout le monde </string>
Chaîne (chaîne) de caractères. Il doit respecter l' encodage XML .
structure
 <struct> 
   <member> 
     <name> foo </name> 
     <value><i4> 1 </i4></value> 
   </member> 
   <member> 
     <name> bar </name> 
     <value><i4> 2 </i4></value> 
   </member> 
 </struct>
Tableau de valeurs, stockage des clés
néant
 <néant/>
valeur nulle ; une extension XML-RPC

Exemples

  • Une invocation XML-RPC pourrait être :
  <?xml version="1.0"?> 
  <methodCall> 
    <methodName> org.wikipedia.DataExchange </methodName> 
    <params> 
      <param> 
         <value><i4> 360 </i4></value> 
      </param> 
      <param> 
         <value><i4> 221 </i4></value> 
      </param> 
    </params> 
  </methodCall>
  • Une réponse à la convocation :
  <?xml version="1.0"?> 
  <methodResponse> 
    <params> 
      <param> 
        <value><string> N° d'échange de données. 360 par 221 </string></value> 
      </param> 
    </params> 
  </methodResponse>

Implémentations

Des implémentations existent pour différents systèmes d'exploitation, langages de programmation, licences de logiciels commerciaux et libres : [ 4 ] C /C++ , Delphi , Frontier , Guile , Java , Lisp , Microsoft .NET , Perl , PHP , Python , Real Basic , Rebol , Tcl , WebObjects et Zope .

Certaines implémentations connues sont :

  • Apache XML-RPC , [ 5 ] une implémentation en Java.
  • XMLRPC-EPI , [ 6 ]​ une implémentation C.
  • XML-RPC-C , [ 7 ] une implémentation pour C et C++.

Références

  1. ^ Simon St. Laurent , Joe Johnston , Edd Dumbill . (Juin 2001) Programmation de services Web avec XML-RPC O'Reilly. Première édition. Préface de Dave Winer. (en anglais)
  2. Dave Winner. (31 mars 2001). Attention : une différence essentielle entre SOAP et XML-RPC UserLand Software, Inc.
  3. Dave Winner. (15 juin 1999) Spécification XML-RPC Archivée le 15 juin 2007 sur la Wayback Machine . Logiciel UserLand, Inc.
  4. Dave Winner. (17 décembre 2003) Implémentations XML-RPC UserLand Software, Inc.
  5. Apache Software Foundation . Apache XML-RPC (en anglais).
  6. Epinions, Inc. XMLRPC-EPI sourceforge.net.
  7. Eric Kidd. XML-RPC pour C et C++ sourceforge.net.

Voir aussi

Liens externes