XML-RPC es un protocolo de llamada a procedimiento remoto (RPC) que utiliza XML para codificar sus llamadas y HTTP como mecanismo de transporte. [ 1 ]
Historia
El protocolo XML-RPC fue creado en 1998 por Dave Winer de UserLand Software y Microsoft , [ 2 ] y Microsoft lo consideró una parte esencial para ampliar sus esfuerzos en el comercio electrónico entre empresas. [ 3 ] A medida que se introdujo nueva funcionalidad, el estándar evolucionó hasta convertirse en lo que ahora es SOAP . [ 4 ]
UserLand admitió XML-RPC desde la versión 5.1 de su sistema de gestión de contenido web Frontier, [ 4 ] lanzado en junio de 1998. [ 5 ]
La idea de XML-RPC de un estándar legible y escribible por humanos, y analizable mediante scripts para solicitudes y respuestas basadas en HTTP, también se ha implementado en especificaciones competidoras como Web Distributed Data Exchange (WDDX) de Allaire y Web Interface Definition Language (WIDL) de webMethod. [ 6 ] El estado de la técnica anterior que encapsulaba objetos COM , CORBA y Java RMI en sintaxis XML y los transportaba a través de HTTP también existía en la tecnología WebBroker de DataChannel. [ 7 ] [ 8 ]
El uso genérico de XML para llamadas a procedimientos remotos (RPC) fue patentado por Phillip Merrick, Stewart Allen y Joseph Lapp en abril de 2006, reivindicando la mejora de una solicitud provisional presentada en marzo de 1998. La patente fue asignada a webMethods , con sede en Fairfax, Virginia . La patente expiró el 23 de marzo de 2019. [ 9 ]
Uso
En XML-RPC, un cliente realiza una llamada a procedimiento remoto (RPC) enviando una solicitud HTTP a un servidor que implementa XML-RPC y recibe la respuesta HTTP. Una llamada puede tener varios parámetros y un único resultado. El protocolo define algunos tipos de datos para los parámetros y el resultado. Algunos de estos tipos de datos son complejos, es decir, anidados. Por ejemplo, un parámetro puede ser un array de cinco enteros.
La estructura de parámetros/resultados y el conjunto de tipos de datos pretenden reflejar los utilizados en los lenguajes de programación comunes.
La identificación de clientes con fines de autorización se puede lograr mediante métodos de seguridad HTTP comunes. La autenticación de acceso básica se puede utilizar para la identificación y autenticación.
En comparación con los protocolos RESTful, donde se transfieren representaciones de recursos (documentos), XML-RPC está diseñado para llamar a métodos . La diferencia práctica radica en que XML-RPC es mucho más estructurado, lo que permite utilizar código de biblioteca común para implementar clientes y servidores, reduciendo el trabajo de diseño y documentación para un protocolo de aplicación específico. Una diferencia técnica importante entre los protocolos RESTful típicos y XML-RPC es que muchos protocolos RESTful utilizan la URI HTTP para la información de parámetros, mientras que en XML-RPC, la URI solo identifica al servidor.
JSON-RPC es similar a XML-RPC.
Tipos de datos
Los tipos de datos comunes se convierten a sus equivalentes XML con los valores de ejemplo que se muestran a continuación:
Ejemplos
Un ejemplo de una solicitud XML-RPC típica sería:
<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 40 </i4></value> </param> </params> </methodCall>Un ejemplo de respuesta típica de XML-RPC sería:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> Dakota del Sur </string></value> </param> </params> </methodResponse>Un fallo típico de XML-RPC sería:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </member> <member> <name> faultString </name> <value><string> Demasiados parámetros . </string></value> </member> </struct> </value> </fault> </methodResponse>Crítica
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 aporta ningún valor añadido respecto a XML. Tanto XML-RPC como XML requieren un modelo de datos a nivel de aplicación, como los nombres de los campos definidos en el esquema XML o los nombres de los parámetros en XML-RPC. Además, XML-RPC utiliza aproximadamente cuatro veces más bytes que XML simple para codificar los mismos objetos, lo que resulta más extenso que JSON . [ 12 ] [ 13 ] [ 14 ]
Véase también
Referencias
- ↑ Simon St. Laurent, Joe Johnston, Edd Dumbill. (Junio de 2001) Programación de servicios web con XML-RPC. O'Reilly. Primera edición.
- ↑ Box, Don (1 de abril de 2001). "Una breve historia de SOAP" . O'Reilly . Recuperado el 27 de octubre de 2010 .
- ↑ Rupley, Sebastian (30 de junio de 1999). "El siguiente paso de XML" . PC Magazine . Archivado del original el 4 de marzo de 2000. Recuperado el 17 de noviembre de 2015 .
- 1 2 Walsh, Jeff (10 de julio de 1999). "Microsoft lidera el impulso del protocolo" . Infoworld . Archivado del original el 14 de septiembre de 1999. Recuperado el 17 de noviembre de 2015 .
- ↑ Walsh, Jeff (29 de junio de 1998). "UserLand lanza Frontier 5.1 y abandona el modelo freeware" . InfoWorld . Archivado del original el 15 de septiembre de 1999. Consultado el 17 de noviembre de 2015 .
- ↑ Udell, Jon (7 de junio de 1999). "Explorando XML-RPC: ¿DCOM? ¿CORBA? ¿RMI? ¿Por qué no simplemente XML-RPC?" . Byte . Archivado del original el 4 de marzo de 2000. Recuperado el 17 de noviembre de 2015 .
- ↑ Walsh, Jeff (25 de mayo de 1998). "El W3C hace un guiño a WebBroker de DataChannel" . Infoworld . Vol. 20, n.º 21. Archivado del original el 10 de septiembre de 1999. Recuperado el 17 de noviembre de 2015 .
- ↑ Vizard, Michael; Walsh, Jeff (29 de junio de 1998). "Dave Pool de DataChannel habla sobre cómo adaptar el papel de XML a diferentes necesidades" . Infoworld . Archivado del original el 16 de septiembre de 1999. Recuperado el 8 de diciembre de 2015 .
- ↑ Merrick; et al. (11 de abril de 2006). "Patente estadounidense 7,028,312" . Archivado del original el 3 de diciembre de 2011. Recuperado el 18 de septiembre de 2008 .
- ↑ "RPC::XML - Un conjunto de clases para el manejo básico de datos, mensajes y XML - metacpan.org" . MetaCPAN . Consultado el 13 de abril de 2025 .
- ↑ "Manual de usuario para XML-RPC para C/C++" . Consultado el 13 de abril de 2025 .
- ↑ "¿Qué ventajas ofrece XML-RPC sobre XML estándar?" . Stack Overflow . 9 de septiembre de 2009 . Consultado el 7 de abril de 2011 .
- ↑ "Una encuesta abierta sobre las ventajas de XmlRpc frente a las alternativas" . intertwingly.net. 22 de noviembre de 2006. Consultado el 7 de abril de 2011 .
- ↑ Jon Canady (14 de enero de 2010). "Si tienes REST, ¿por qué XML-RPC?" . joncanady.com. Archivado del original el 11 de mayo de 2013. Recuperado el 7 de abril de 2011 .
Enlaces externos
- Sitio web oficial