Upload
fabio-alexandre-spanhol
View
1.042
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
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
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
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
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
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
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC
Prof. Fabio Alexandre Spanhol, M.Sc. 8
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
ModeloCliente e Servidor devem entender um ao
outro
Prof. Fabio Alexandre Spanhol, M.Sc. 10
Wieviel Uhrist es? ?
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?
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
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
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
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operação XML-RPC
Prof. Fabio Alexandre Spanhol, M.Sc. 16
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
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
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
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
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
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
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
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
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
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Servidor Python
Prof. Fabio Alexandre Spanhol, M.Sc. 27
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Cliente Python
Prof. Fabio Alexandre Spanhol, M.Sc. 28
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
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
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Cliente Java
Prof. Fabio Alexandre Spanhol, M. Sc. 32