xml-rpc: tópicos introdutórios

32
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Upload: fabio-alexandre-spanhol

Post on 20-Aug-2015

1.039 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Page 2: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Remote Procedure Calls (RPC)RPC é um conceito de comunicação interprocesso

que permite um programa chamar uma rotina para serexecutada em outro espaço de endereçamento, normalmente remotoabstração de alto nível de rede para programação

Foco no problema da programação• Deixar o pacote RPC manipular os detalhes de

networking Desenvolvido em meados dos anos 1970Termo cunhado por Bruce Jay Nelson, na Xerox

Prof. Fabio Alexandre Spanhol, M.Sc. 2

Page 3: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

RPCPrecursores

Concurrent Pascal (1975) • Chamadas de procedimento inter-processo de alto nível

ARPANet (1976) • RFC 707 • Especificação necessária para RPC em rede sobre a

ARPANetXerox (1981) • Primeiro uso comercial • Batizado “Courier” System

Prof. Fabio Alexandre Spanhol, M.Sc. 3

Page 4: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

RPCInfluenciou

Apollo Network Computing System (NCS)

• Antecessor do Microsoft's Distributed Component Object Model (DCOM)

Common Object Request Broker Architecture (CORBA) Java RMI (Remote Method Invokation)

Prof. Fabio Alexandre Spanhol, M.Sc. 4

Page 5: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

RPCAnos 1990: Ascenção dos Padrões Web

Codificação baseada em XMLIndependência de plataformaLinguagem agnóstica

Prof. Fabio Alexandre Spanhol, M. Sc. 5

Page 6: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPCXML-RPC é simplesmente RPC

codificado em XML!Criado em 1998 por Dave WinerSomente 8 tipos de dados básicosSimples, fácil de usarA especificação possui apenas 7 páginas(includindo exemplos e FAQ)Cresceu dentro do Simple Object Access Protocol (SOAP) que tem mais recursos (e maiscomplexidade)! Prof. Fabio Alexandre Spanhol, M.Sc. 6

Page 7: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

E SOAP? SOAP é outro protocolo para

aplicações Client/Server Os princípios gerais são similares ao XML-RPC, usando XML como linguagemcomumTambém chamado de “lightweight”, mas a especificação tem mais de 77000 palavras(40 páginas)!

Prof. Fabio Alexandre Spanhol, M.Sc. 7

Page 8: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPC

Prof. Fabio Alexandre Spanhol, M.Sc. 8

Page 9: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPCXML-RPC é

"...a spec and a set of implementations that allow software running on disparate operating systems, running in different environments to make procedure calls over the Internet. It's remote procedure calling using HTTP as the transport and XML as the encoding. XML-RPC is designed to be as simple as possible, while allowing complex data structures to be transmitted, processed and returned.“ (xmlrpc.scripting.com)

Prof. Fabio Alexandre Spanhol, M.Sc. 9

Page 10: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

ModeloCliente e Servidor devem entender um ao

outro

Prof. Fabio Alexandre Spanhol, M.Sc. 10

Wieviel Uhrist es? ?

Page 11: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

ModeloAmbos devem acordar uma

linguagem comum

Prof. Fabio Alexandre Spanhol, M.Sc. 11

Wieviel Uhrist es?

Quelle heure est-il?7pm!

What’s thetime?

Page 12: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

ModeloLinguagem comum

Cliente CodificaServidor Decodifica

Prof. Fabio Alexandre Spanhol, M.Sc. 12

Wieviel Uhrist es?

Quelle heure est-il?7pm!

What’s thetime?Encode

Decode

Page 13: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

ModeloXML-RPC usa XML como linguagem

comum

Prof. Fabio Alexandre Spanhol, M.Sc. 13

Python, Java,

C++, etc.

Python, Java, C++, etc.

XMLEncode

Decode

Page 14: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

AbstraçãoBibliotecas RPC abstraem os detalhes da

comunicação em redeImplementação em nível de sockets depende da biblioteca RPC utilizadaNão é uma solução perfeita – a redepode cair, pacotes podem ser perdidos, etc.

Prof. Fabio Alexandre Spanhol, M.Sc. 14

Page 15: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Operação XML-RPCHTTP implica em uma conexão TCP em baixo

nívelCliente usa um HTTP POST para iniciar um método remoto no servidor O servidor responde com um HTTP response padrão

Prof. Fabio Alexandre Spanhol, M.Sc. 15

Page 16: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Operação XML-RPC

Prof. Fabio Alexandre Spanhol, M.Sc. 16

Page 17: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Questão importante!O que acontece se uma operação RPC tem

efeitos colaterais (isto é, altera o estado do sistema remoto), mas o mecanismo de redecai durante a operação?

Prof. Fabio Alexandre Spanhol, M.Sc. 17

Page 18: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Questão importante!Uma procedure p é idempotente, atuando em um processo de estado x, se e somente se:p(p(x)) == p(x)

Executar uma operação idempotente somente altera o estado do sistema uma vez, mesmo que executada a operação várias vezes

Se uma operação RPC tem efeitos colaterias e não é idempontente, o que ocorre se uma operação é duplicada, devido a uma falha de rede?

Ex: adicionar uma linha ao final de um arquivo de configuração, como/etc/fstab

O sistema pode ficar em um estado inconsistente!

Prof. Fabio Alexandre Spanhol, M.Sc. 18

Page 19: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Tipos de Dados XML-RPCint

Inteiro sinalizado de 32 bits*Mapeado para números inteiros em python

stringASCII strings (limitado a caracteres permitidos em XML) Pode conter bytes NULL embutidos

booleandouble

ponto flutuante de precisão dupla *Mapeado para números em ponto flutuante em python

dateTimepouca utilidade (sem suporte a time zones)

Prof. Fabio Alexandre Spanhol, M.Sc. 19

Page 20: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Tipos de Dados XML-RPCstruct

pares que mapeiam chave-valorEquivalente a dicionários em python

arrayvetores de dados de qualquer tipo (pode misturar tipos)Equivalente a listas em python

base64dados binários arbitrários codificados no formato base64"Manipulador" para qualquer tipo que não sejam os tipos anterioresObjetos python podem ser mapeados em base64Strings com caracteres inválidos em XML podem ser codificadas em base64 Prof. Fabio Alexandre Spanhol, M.Sc. 20

Page 21: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Independência de LinguagemUsando tipos de dados simples, chamadas

XML-RPC podem ser independentes de linguagem

ex.: um cliente python chamando um servidor PHP

dependência de linguagem ocorre quando objetos específicos da linguagem são codificados em base64

Prof. Fabio Alexandre Spanhol, M.Sc. 21

Page 22: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPC: PythonBaterias incluídas!

Já na biblioteca padrãoBasta usar os módulos xmlrpc.client e xmlrpc.server

Prof. Fabio Alexandre Spanhol, M. Sc. 22

Page 23: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Módulos XML-RPC para Pythonxmlrpc.client

Rotinas para implementar clientes XML-RPCClasse xmlrpc.client.ServerProxy gerencia acomunicação com um servidor remotoxmlrpc.server

Rotinas para implementar servidores XML-RPCClasse xmlrpc.server.SimpleXMLRPCServer criainstância de um servidor XML-RPCClasse xmlrpc.server.DocXMLRPCServer• Extensão• Provê documentação na requisição HTTP GET

Prof. Fabio Alexandre Spanhol, M.Sc. 23

Page 24: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

DocXMLRPCServerDocXMLRPCServer provê

serviços RPC em operações HTTP POST (dosclientes) documentação HTML em operações HTTP GET(dos navegadores web)

Prof. Fabio Alexandre Spanhol, M.Sc. 24

Page 25: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Documentação AutomáticaPython XML-RPC usa docstrings para gerar

documentação em HTMLVisualizado navegando em http://localhost:8888com um navegador webEm geral http://host:port

Também pode ser visto usandohelp(nome_método) de dentro dointerpretrador python após ter importado omódulo

Prof. Fabio Alexandre Spanhol, M.Sc. 25

Page 26: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

Métodos HTML CosméticosMembros da classe DocXMLRPCServerset_server_title(“Título da Página HTML”)

set_server_name(“Nome do Servidor”)

set_server_documentation(string)

• Documentação mostrada em parágrafos antes da lista demétodos

Prof. Fabio Alexandre Spanhol, M.Sc. 26

Page 27: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPC: Servidor Python

Prof. Fabio Alexandre Spanhol, M.Sc. 27

Page 28: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPC: Cliente Python

Prof. Fabio Alexandre Spanhol, M.Sc. 28

Page 29: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

EndereçamentoPara servidores locais, use localhost nos

métodos client/serverEx.: construtor do servidor ou construtor cliente(ServerProxy) liga-se a interface de loopback do host local Acessível somente da máquina local

Para servidores públicos utilize FQDNserver = SimpleXMLRPCServer((“host3.universidade.br”, 8888))

Prof. Fabio Alexandre Spanhol, M.Sc. 29

Page 30: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

EndereçamentoUse portas não-reservadas!

Portas numeradas de 0 a 1024 são privilegiadas e restritas a serviços do SOUse numeração de portas acima de 1024Evite portas como 8080 (porta alternativa paraservidores HTTP), 5432 (Postgresql), 9600-9800(Condor), 1521 (Oracle), 3306 (Mysql), etc.

Prof. Fabio Alexandre Spanhol, M.Sc. 30

Page 31: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPC: JavaNecessário instalar o Apache XML-RPC

Implementação XML-RPC em Java feita pela Fundação Apache

• http://ws.apache.org/xmlrpc/

Prof. Fabio Alexandre Spanhol, M. Sc. 31

Page 32: XML-RPC: Tópicos Introdutórios

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

XML-RPC: Cliente Java

Prof. Fabio Alexandre Spanhol, M. Sc. 32