close

XML-RPC

Ir para a navegação Ir para a pesquisa

XML-RPC ( Remote Procedure Call ) é um protocolo de chamada de procedimento remoto que usa XML para codificar dados e HTTP como protocolo de transmissão de mensagens. [ 1 ]

É um protocolo muito simples, pois define apenas alguns tipos de dados e comandos úteis, além de uma breve descrição completa. A simplicidade do XML-RPC contrasta com a maioria dos protocolos RPC que possuem extensa documentação e requerem considerável suporte de software para uso.

Foi criado por Dave Winer da empresa UserLand Software em associação com a Microsoft em 1998 . Considerando que a Microsoft era muito simples, decidiu adicionar funcionalidades a ela, após o que, após várias etapas de desenvolvimento, o padrão deixou de ser simples e passou a ser o que hoje é conhecido como SOAP . Uma diferença fundamental é que nos procedimentos SOAP os parâmetros têm um nome e sua ordem não importa, o que não é o caso do XML-RPC . [ 2 ]

Tipos de dados

De acordo com a especificação XML-RPC , [ 3 ] os principais tipos de dados são:

Nome Exemplo de tags Descrição
variedade
 <array> 
   <data> 
     <value><i4> 1404 </i4></value> 
     <value><string> Algo aqui </string></value> 
     <value><i4> 1 </i4></ valor> 
   </data> 
 </array>
Matriz de valores, sem armazenar chaves
base64
 <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64>
Dados binários codificados em base 64
boleano
 <boolean> 1 </boolean>
Valor lógico (0 ou 1)
data hora
 <dateTime.iso8601> 19980717T14:08:55 </dateTime.iso8601>
Dia e hora
em dobro
 <double> -12,53 </double>
Número de ponto flutuante de precisão dupla
inteiro
 <i4> 42 </i4>

qualquer

 <int> 42 </int>
Numero inteiro
corda
 <string> Olá mundo </string>
String (string) de caracteres. Deve seguir a codificação XML .
estrutura
 <struct> 
   <member> 
     <name> foo </name> 
     <value><i4> 1 </i4></value> 
   </member> 
   <member> 
     <name> barra </name> 
     <value><i4> 2 </i4></value> 
   </member> 
 </struct>
Matriz de valores, armazenando chaves
nada
 <nil/>
valor nulo; uma extensão XML-RPC

Exemplos

  • Uma invocação XML-RPC pode ser:
  <?xml version="1.0"?> 
  <methodCall> 
    <methodName> org.wikipedia.DataExchange </methodName> 
    <params> 
      <param> 
         <value><i4> 360 </i4></value> 
      </param> 
      <param> 
         <value><i4> 221 </i4></value> 
      </param> 
    </params> 
  </methodCall>
  • Resposta à convocação:
  <?xml version="1.0"?> 
  <methodResponse> 
    <params> 
      <param> 
        <value><string> Número de troca de dados. 360 por 221 </string></value> 
      </param> 
    </params> 
  </methodResponse>

Implementações

Existem implementações para vários sistemas operacionais, linguagens de programação, licenças de software comercial e livre: [ 4 ] C /C++ , Delphi , Frontier , Guile , Java , Lisp , Microsoft .NET , Perl , PHP , Python , Real Basic , Rebol , Tcl , WebObjects e Zope .

Algumas implementações conhecidas são:

  • Apache XML-RPC , [ 5 ] uma implementação em Java.
  • XMLRPC-EPI , [ 6 ]​ uma implementação em C.
  • XML-RPC-C , [ 7 ] uma implementação para C e C++.

Referências

  1. ^ Simon St. Laurent , Joe Johnston , Edd Dumbill . (Junho 2001) Programando Web Services com XML-RPC O'Reilly. Primeira edição. Prefácio de Dave Winer. (em inglês)
  2. Dave Winer. (31 de março de 2001). Atenção: Uma diferença fundamental entre SOAP e XML-RPC UserLand Software, Inc.
  3. Dave Winer. (15 de junho de 1999) Especificação XML-RPC Arquivado em 15 de junho de 2007, no Wayback Machine . UserLand Software, Inc.
  4. Dave Winer. (17 de dezembro de 2003) Implementações XML-RPC UserLand Software, Inc.
  5. Fundação de Software Apache . Apache XML-RPC (em inglês).
  6. Epinions, Inc. XMLRPC-EPI sourceforge.net.
  7. Eric Kidd. XML-RPC para C e C++ sourceforge.net.

Veja também

Links externos