XML-RPC
XML-RPC (Remote Procedure Call) es un protocolo de llamada a procedimiento remoto que usa XML para codificar los datos y HTTP como protocolo de transmisión de mensajes.[1]
Es un protocolo muy simple ya que solo define unos cuantos tipos de datos y comandos útiles, además de una descripción completa de corta extensión. La simplicidad del XML-RPC contrasta con la mayoría de protocolos RPC que tiene una documentación extensa y requiere considerable soporte de software para su uso.
Fue creado por Dave Winer de la empresa UserLand Software en asociación con Microsoft en el año 1998. Al considerar Microsoft que era muy simple decidió añadirle funcionalidades, tras las cuales, después de varias etapas de desarrollo, el estándar dejó de ser sencillo y se convirtió en lo que es actualmente conocido como SOAP. Una diferencia fundamental es que en los procedimientos en SOAP los parámetros tienen nombre y no interesa su orden, no siendo así en XML-RPC.[2]
Tipos de Datos
Según la especificación de XML-RPC,[3] los principales tipos de datos son:
Nombre | Tags de ejemplo | Descripción |
---|---|---|
array |
<array>
<data>
<value><i4>1404</i4></value>
<value><string>Algo aquí</string></value>
<value><i4>1</i4></value>
</data>
</array>
|
Array de valores, sin almacenar claves |
base64 |
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
|
Datos binarios codificados en base 64 |
boolean |
<boolean>1</boolean>
|
Valor lógico (0 o 1) |
date/time |
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
|
Día y hora |
double |
<double>-12.53</double>
|
Número de punto flotante de doble precisión |
integer |
<i4>42</i4>
o <int>42</int>
|
Número entero |
string |
<string>Hola mundo</string>
|
String (cadena) de caracteres. Debe seguir la codificación XML. |
struct |
<struct>
<member>
<name>foo</name>
<value><i4>1</i4></value>
</member>
<member>
<name>bar</name>
<value><i4>2</i4></value>
</member>
</struct>
|
Array de valores, almacenando claves |
nil |
<nil/>
|
Valor nulo; una extensión XML-RPC |
Ejemplos
- Una invocación XML-RPC podría ser:
<?xml version="1.0"?>
<methodCall>
<methodName>org.wikipedia.intercambioDatos</methodName>
<params>
<param>
<value><i4>360</i4></value>
</param>
<param>
<value><i4>221</i4></value>
</param>
</params>
</methodCall>
- Una respuesta a la invocación:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>Intercambio datos nro. 360 por 221</string></value>
</param>
</params>
</methodResponse>
Implementaciones
Existen implementaciones para varios sistemas operativos, lenguajes de programación, licencias comerciales y de software libre:[4] C/C++, Delphi, Frontier, Guile, Java, Lisp, Microsoft .NET, Perl, PHP, Python, Real Basic, Rebol, Tcl, WebObjects y Zope.
Algunas implementaciones conocidas son:
Referencias
- Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) Programming Web Services with XML-RPC O'Reilly. First Edition. Foreword by Dave Winer. (en inglés)
- Dave Winer. (Mar 31, 2001). Heads up: A key difference between SOAP and XML-RPC UserLand Software, Inc. (en inglés)
- Dave Winer. (June 15, 1999) XML-RPC Specification Archivado el 15 de junio de 2007 en Wayback Machine. UserLand Software, Inc. (en inglés)
- Dave Winer. (December 17, 2003) XML-RPC Implementations UserLand Software, Inc. (en inglés)
- Apache Software Foundation. Apache XML-RPC (en inglés).
- Epinions, Inc. XMLRPC-EPI sourceforge.net (en inglés).
- Eric Kidd. XML-RPC for C and C++ sourceforge.net (en inglés).
Véase también
- Portal:Informática. Contenido relacionado con Informática.
- SOAP
- IDL
- XML
- RPC
Enlaces externos
- Sitio oficial de XML-RPC, UserLand Software, Inc. (en inglés)
- Extensiones XML-RPC (en inglés)