XML-RPC - XML-RPC
XML-RPC es un protocolo de llamada a procedimiento remoto (RPC) que utiliza XML para codificar sus llamadas y HTTP como mecanismo de transporte.
Historia
El protocolo XML-RPC fue creado en 1998 por Dave Winer de UserLand Software y Microsoft , y Microsoft vio el protocolo como una parte esencial para ampliar sus esfuerzos en el comercio electrónico de empresa a empresa. A medida que se introdujeron nuevas funciones, el estándar evolucionó hasta convertirse en lo que ahora es SOAP .
UserLand admitía XML-RPC desde la versión 5.1 de su sistema de gestión de contenido web Frontier, lanzado en junio de 1998.
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 competidoras como el Intercambio de datos distribuidos por web de Allaire (WDDX) y el Lenguaje de definición de interfaz web de webMethod (WIDL). ). Antes de envolver el arte COM , CORBA y Java RMI objetos en la sintaxis XML y transportarlos a través de HTTP también existía en la tecnología de WebBroker DataChannel.
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 , ubicada en Fairfax, VA . La patente expiró el 23 de marzo de 2019.
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 usan 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 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 |
<array>
<data>
<value><i4>1404</i4></value>
<value><string>Something here</string></value>
<value><i4>1</i4></value>
</data>
</array>
|
Matriz de valores, sin almacenar claves |
| base64 |
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
|
Datos binarios codificados en Base64 |
| booleano |
<boolean>1</boolean>
|
Valor lógico booleano (0 o 1) |
| fecha y hora |
<dateTime.iso8601>19980717T14:08:55Z</dateTime.iso8601>
|
Fecha y hora en formato ISO 8601 |
| doble |
<double>-12.53</double>
|
Número de coma flotante de doble precisión |
| entero |
<int>42</int>
o <i4>42</i4>
|
Número entero , entero |
| cuerda |
<string>Hello world!</string>
o Hello world!
|
Cadena de caracteres. Debe seguir la codificación XML . |
| estructura |
<struct>
<member>
<name>foo</name>
<value><i4>1</i4></value>
</member>
<member>
<name>bar</name>
<value><i4>2</i4></value>
</member>
</struct>
|
Matriz asociativa |
| nulo |
<nil/>
|
Valor nulo discriminado ; una extensión XML-RPC |
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 una respuesta XML-RPC típica sería:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
Un error 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>Too many parameters.</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 agrega ningún valor sobre XML. Tanto XML-RPC como XML requieren un modelo de datos a nivel de aplicación, como los nombres de campo 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 .
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