XML-RPC - XML-RPC

XML-RPC é um protocolo de chamada de procedimento remoto (RPC) que usa XML para codificar suas chamadas e HTTP como mecanismo de transporte.

História

O protocolo XML-RPC foi criado em 1998 por Dave Winer da UserLand Software e Microsoft , com a Microsoft vendo o protocolo como uma parte essencial para aumentar seus esforços em e-commerce business-to-business. Conforme a nova funcionalidade foi introduzida, o padrão evoluiu para o que agora é SOAP .

UserLand oferece suporte a XML-RPC a partir da versão 5.1 de seu sistema de gerenciamento de conteúdo da Web Frontier, lançado em junho de 1998.

A ideia do XML-RPC de um padrão legível e gravável e analisável por script para solicitações e respostas baseadas em HTTP também foi implementada em especificações concorrentes, como Web Distributed Data Exchange (WDDX) da Allaire e Web Interface Definition Language (WIDL ) do webMethod ) A arte anterior envolvendo objetos COM , CORBA e Java RMI na sintaxe XML e transportando-os via HTTP também existia na tecnologia WebBroker da DataChannel.

O uso genérico de XML para chamada de procedimento remoto (RPC) foi patenteado por Phillip Merrick, Stewart Allen e Joseph Lapp em abril de 2006, reivindicando o benefício de um pedido provisório depositado em março de 1998. A patente foi atribuída a webMethods , localizada em Fairfax, VA . A patente expirou em 23 de março de 2019

Uso

Em XML-RPC, um cliente executa um RPC enviando uma solicitação HTTP a um servidor que implementa XML-RPC e recebe a resposta HTTP. Uma chamada pode ter vários parâmetros e um resultado. O protocolo define alguns tipos de dados para os parâmetros e resultados. Alguns desses tipos de dados são complexos, ou seja, aninhados. Por exemplo, você pode ter um parâmetro que é uma matriz de cinco inteiros.

Os parâmetros / estrutura de resultados e o conjunto de tipos de dados têm como objetivo espelhar aqueles usados ​​em linguagens de programação comuns.

A identificação de clientes para fins de autorização pode ser obtida usando métodos de segurança HTTP populares. A autenticação de acesso básico pode ser usada para identificação e autenticação.

Em comparação com os protocolos RESTful, onde representações de recursos (documentos) são transferidos, XML-RPC é projetado para chamar métodos . A diferença prática é apenas que o XML-RPC é muito mais estruturado, o que significa que o código de biblioteca comum pode ser usado para implementar clientes e servidores e há menos trabalho de design e documentação para um protocolo de aplicativo específico. Uma diferença técnica saliente entre os protocolos RESTful típicos e XML-RPC é que o protocolo RESTful usa o URI HTTP para informações de parâmetro enquanto que com XML-RPC, o URI apenas identifica o servidor.

JSON-RPC é semelhante ao XML-RPC.

Tipos de dados

Os tipos de dados comuns são convertidos em seus equivalentes XML com valores de exemplo mostrados abaixo:

Nome Exemplo de tag Descrição
variedade
<array>
  <data>
    <value><i4>1404</i4></value>
    <value><string>Something here</string></value>
    <value><i4>1</i4></value>
  </data>
</array>
Matriz de valores, sem armazenar chaves
base64
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
Dados binários codificados em Base64
boleano
<boolean>1</boolean>
Valor lógico booleano (0 ou 1)
data hora
<dateTime.iso8601>19980717T14:08:55Z</dateTime.iso8601>
Data e hora no formato ISO 8601
em dobro
<double>-12.53</double>
Número de ponto flutuante de precisão dupla
inteiro
<int>42</int>

ou

<i4>42</i4>
Número inteiro , inteiro
fragmento
<string>Hello world!</string>

ou

Hello world!
Sequência de caracteres. Deve seguir a codificação XML .
estrutura
<struct>
  <member>
    <name>foo</name>
    <value><i4>1</i4></value>
  </member>
  <member>
    <name>bar</name>
    <value><i4>2</i4></value>
  </member>
</struct>
Matriz associativa
nada
<nil/>
Valor nulo discriminado ; uma extensão XML-RPC

Exemplos

Um exemplo de uma solicitação XML-RPC típica seria:

<?xml version="1.0"?>
<methodCall>
  <methodName>examples.getStateName</methodName>
  <params>
    <param>
        <value><i4>40</i4></value>
    </param>
  </params>
</methodCall>

Um exemplo de resposta XML-RPC típica seria:

<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
        <value><string>South Dakota</string></value>
    </param>
  </params>
</methodResponse>

Uma falha típica de XML-RPC seria:

<?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

Críticos recentes (de 2010 em diante) de XML-RPC argumentam que as chamadas RPC podem ser feitas com XML simples e que XML-RPC não agrega nenhum valor sobre XML. Tanto XML-RPC quanto XML requerem um modelo de dados de nível de aplicativo, como quais nomes de campo são definidos no esquema XML ou os nomes de parâmetro em XML-RPC. Além disso, o XML-RPC usa cerca de 4 vezes o número de bytes em comparação com o XML simples para codificar os mesmos objetos, que é prolixo em comparação com JSON .

Veja também

Referências

links externos