XML-RPC (del inglés eXtensible Markup L anguage Remote Procedure Call - Llamada a procedimiento remoto XML) es un estándar / protocolo de llamada a procedimiento remoto que utiliza XML para codificar sus mensajes y HTTP como mecanismo de transporte [1] . Es el progenitor de SOAP y es excepcionalmente fácil de usar. XML-RPC, como cualquier otra interfaz de llamada a procedimiento remoto (RPC), define un conjunto de tipos de datos y comandos estándar que un programador puede usar para acceder a la funcionalidad de otro programa ubicado en otra computadora.en la red
El protocolo XML-RPC fue desarrollado originalmente por Dave Winer de UserLand Software en colaboración con Microsoft en 1998 . Sin embargo, Microsoft pronto encontró este protocolo demasiado simplista y comenzó a expandir su funcionalidad. Después de varios ciclos de expansión de la funcionalidad, apareció el sistema ahora conocido como SOAP. Más tarde, Microsoft comenzó a publicitar e implementar ampliamente SOAP, y el XML-RPC original fue rechazado. Pero a pesar de su rechazo por parte de Microsoft, el estándar XML-RPC fascinó a muchos programadores con su extraordinaria simplicidad y, debido a esto, existe hasta el día de hoy e incluso está ganando popularidad gradualmente.
Escribe un nombre | Ejemplo de etiqueta | Descripción del tipo |
---|---|---|
formación | <matriz> <datos> <valor><i4> 1404 </i4></valor> <value><string> Cualquier cosa aquí </string></value> <valor><i4> 1 </i4></valor> </datos> </matriz> | Matriz de valores, sin claves |
base64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | Datos binarios codificados en Base64 |
booleano | <booleano> 1 </booleano> | Valor booleano (0 o 1) |
fecha y hora | <fechaHora.iso8601> 19980717T14:08:55 </fechaHora.iso8601> | fecha y hora |
doble | <doble> -12.53 </doble> | Valor fraccionario de precisión doble |
entero | <i4> 42 </i4> | Entero |
cuerda | <string> ¡Hola Mundo! </cadena> | Cadena de caracteres (en la misma codificación que el documento XML completo ) |
estructura | <estructura> <miembro> <nombre> Algo </nombre> <valor><i4> 1 </i4></valor> </miembro> <miembro> <nombre> Algo más </nombre> <valor><i4 > 2 </i4></valor> </miembro> </estructura> | Matriz de valores, con claves |
nulo | <cero/> | El valor nulo (vacío) es una extensión XML-RPC |
Un ejemplo típico de solicitud XML-RPC:
<?xml version="1.0"?> <methodCall> <methodName> ejemplos.getStateName </methodName> <params> <param> <value><i4> 41 </i4></value> </param> </ params> </llamada al método>Un ejemplo típico de una respuesta a una solicitud XML-RPC:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Dakota del Sur </string></value> </param> </params> </methodResponse>Un ejemplo típico de un error en una solicitud XML-RPC:
<?xml version="1.0"?> <métodoRespuesta> <falla> <valor> <estructura> <miembro> <nombre> código de falla </nombre> <valor><int> 4 </int></valor> </ miembro> <miembro> <nombre> cadena de error </nombre> <valor><cadena> Demasiados parámetros. </string></value> </member> </struct> </value> </fault> </methodResponse>En este caso, las etiquetas con un tipo de datos se pueden omitir cuando se transmiten desde el cliente y no se especifican en absoluto.
Los críticos recientes (desde 2010 en adelante) de XML-RPC argumentan que las llamadas RPC se pueden realizar con XML simple y que XML-RPC no agrega valor sobre XML. Tanto XML-RPC como XML requieren un modelo de datos de nivel de aplicación, como qué nombres de campo se definen en el esquema XML o nombres de parámetros en XML-RPC. Además, XML-RPC usa alrededor de 4 veces más bytes que XML normal para codificar los mismos objetos, lo cual es detallado en comparación con JSON .