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 ve el protocolo como una parte esencial para ampliar sus esfuerzos en el comercio electrónico de empresa a empresa. [3] A medida que se introdujeron nuevas funciones, el estándar evolucionó hasta convertirse en lo que ahora es SOAP . [4]
UserLand soportó 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 analizable por script y legible por humanos para solicitudes y respuestas basadas en HTTP también se ha implementado en especificaciones competitivas como el Intercambio de datos distribuidos por web de Allaire (WDDX) y el Lenguaje de definición de interfaz web de webMethod (WIDL). ). [6] En la tecnología WebBroker de DataChannel también existía la técnica anterior que envuelve los objetos RMI COM , CORBA y Java en sintaxis XML y los transporta a través de HTTP. [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, reclamando el beneficio de una solicitud provisional presentada en marzo de 1998. La patente fue asignada a webMethods , ubicado en Fairfax, VA . La patente expiró el 23 de marzo de 2019 [9].
Uso
En XML-RPC, un cliente realiza un 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 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, puede tener un parámetro que sea una matriz de cinco números enteros.
La estructura de parámetros / resultados y el conjunto de tipos de datos están pensados para reflejar los que se utilizan en lenguajes de programación comunes.
La identificación de clientes con fines de autorización se puede lograr utilizando métodos de seguridad HTTP populares. La autenticación de acceso básica se puede utilizar para identificación y autenticación.
En comparación con los protocolos RESTful, donde se transfieren las representaciones de recursos (documentos), XML-RPC está diseñado para llamar a métodos . La diferencia práctica es que XML-RPC está mucho más estructurado, lo que significa que el código de biblioteca común se puede utilizar para implementar clientes y servidores y hay menos trabajo de diseño y documentación para un protocolo de aplicación específico. Una diferencia técnica destacada entre los protocolos RESTful típicos y XML-RPC es que el protocolo RESTful usa el URI HTTP para la información de los parámetros, mientras que con XML-RPC, el URI solo identifica al servidor.
JSON-RPC es similar a XML-RPC.
Tipos de datos
Los tipos de datos comunes se convierten en sus equivalentes XML con valores de ejemplo que se muestran a continuación:
Nombre | Ejemplo de etiqueta | Descripción |
---|---|---|
formación |
| Matriz de valores, sin almacenar claves |
base64 |
| Datos binarios codificados en Base64 |
booleano |
| Valor lógico booleano (0 o 1) |
fecha y hora |
| Fecha y hora en formato ISO 8601 |
doble |
| Número de coma flotante de doble precisión |
entero |
o
| Número entero , entero |
cuerda |
o ¡Hola Mundo! | Cadena de caracteres. Debe seguir la codificación XML . |
estructura |
| Matriz asociativa |
nulo |
| Valor nulo discriminado ; una extensión XML-RPC |
Ejemplos de
Un ejemplo de una solicitud XML-RPC típica sería:
xml version = "1.0"?> examples.getStateName 40
Un ejemplo de una respuesta XML-RPC típica sería:
xml version = "1.0"?> Dakota del Sur
Un error típico de XML-RPC sería:
xml version = "1.0"?> failureCode 4 failureString Demasiados parámetros.
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 agrega ningún valor sobre XML. Tanto XML-RPC como XML requieren un modelo de datos a nivel de aplicación, como qué nombres de campo están definidos en el esquema XML o los nombres de parámetros en XML-RPC. Además, XML-RPC usa aproximadamente 4 veces la cantidad de bytes en comparación con XML simple para codificar los mismos objetos, lo que en sí mismo es detallado en comparación con JSON . [10] [11] [12]
Ver también
- Ajax (programación)
- Tecnologías de componentes
- Comparación de formatos de serialización de datos
- OPML
- JSON-RPC
- servicio web
- gRPC
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 . Consultado el 27 de octubre de 2010 .
- ^ Rupley, Sebastian (30 de junio de 1999). "Siguiente paso de XML" . Revista de PC . Archivado desde el original el 4 de marzo de 2000 . Consultado el 17 de noviembre de 2015 .
- ^ a b Walsh, Jeff (10 de julio de 1999). "Microsoft impulsa el protocolo de punta de lanza" . Infoworld . Archivado desde el original el 14 de septiembre de 1999 . Consultado el 17 de noviembre de 2015 .
- ^ Walsh, Jeff (29 de junio de 1998). "UserLand lanza Frontier 5.1, cae modelo gratuito" . InfoWorld . Archivado desde el 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 solo XML-RPC?" . Byte . Archivado desde el original el 4 de marzo de 2000 . Consultado el 17 de noviembre de 2015 .
- ^ Walsh, Jeff (25 de mayo de 1998). "W3C da un guiño al WebBroker de DataChannel" . Infoworld . 20 (21). Archivado desde el original el 10 de septiembre de 1999 . Consultado el 17 de noviembre de 2015 .
- ^ Vizard, Michael; Walsh, Jeff (29 de junio de 1998). "Dave Pool de DataChannel habla sobre la configuración del papel de XML para satisfacer diferentes necesidades" . Infoworld . Archivado desde el original el 16 de septiembre de 1999 . Consultado el 8 de diciembre de 2015 .
- ^ Merrick; et al. (11 de abril de 2006). "Patente de Estados Unidos 7.028.312" . Consultado el 18 de septiembre de 2008 .
- ^ "¿Cuál es el beneficio de XML-RPC sobre XML simple?" . Desbordamiento de pila . 9 de septiembre de 2009 . Consultado el 7 de abril de 2011 .
- ^ "Una encuesta abierta sobre los méritos de XmlRpc frente a las alternativas" . www.intertwingly.net. 22 de noviembre de 2006 . Consultado el 7 de abril de 2011 .
- ^ Jon Canady (14 de enero de 2010). "Si tiene REST, ¿por qué XML-RPC?" . joncanady.com. Archivado desde el original el 11 de mayo de 2013 . Consultado el 7 de abril de 2011 .
enlaces externos
- Página web oficial