UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Remote Procedure Calls (RPC)
RPC é um conceito de comunicação interprocesso
que...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
RPC
Precursores
Concurrent Pascal (1975)
• Chamadas de procedimento inter-proce...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
RPC
Influenciou
Apollo Network Computing
System (NCS)
• Antecessor do Microsoft...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
RPC
Anos 1990: Ascenção dos Padrões Web
Codificação baseada em XML
Independênci...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC
XML-RPC é simplesmente RPC
codificado em XML!
Criado em 1998 por Dave W...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
E SOAP?
SOAP é outro protocolo para
aplicações Client/Server
Os princípios gera...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC
Prof. Fabio Alexandre Spanhol, M.Sc. 8
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC
XML-RPC é
"...a spec and a set of implementations that allow
software r...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Modelo
Cliente e Servidor devem entender um ao
outro
Prof. Fabio Alexandre Span...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Modelo
Ambos devem acordar uma
linguagem comum
Prof. Fabio Alexandre Spanhol, M...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Modelo
Linguagem comum
Cliente Codifica
Servidor Decodifica
Prof. Fabio Alexand...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Modelo
XML-RPC usa XML como linguagem
comum
Prof. Fabio Alexandre Spanhol, M.Sc...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Abstração
Bibliotecas RPC abstraem os detalhes da
comunicação em rede
Implement...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Operação XML-RPC
HTTP implica em uma conexão TCP em baixo
nível
Cliente usa um ...
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 (...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Questão importante!
Uma procedure p é idempotente, atuando em um processo de
es...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Tipos de Dados XML-RPC
int
Inteiro sinalizado de 32 bits
*Mapeado para números ...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Tipos de Dados XML-RPC
struct
pares que mapeiam chave-valor
Equivalente a dicio...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Independência de Linguagem
Usando tipos de dados simples, chamadas
XML-RPC pode...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Python
Baterias incluídas!
Já na biblioteca padrão
Basta usar os módul...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Módulos XML-RPC para Python
xmlrpc.client
Rotinas para implementar clientes XML...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
DocXMLRPCServer
DocXMLRPCServer provê
serviços RPC em operações HTTP POST (dos
...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Documentação Automática
Python XML-RPC usa docstrings para gerar
documentação e...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Métodos HTML Cosméticos
Membros da classe DocXMLRPCServer
set_server_title(“Tít...
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çamento
Para servidores locais, use localhost nos
métodos client/server
E...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
Endereçamento
Use portas não-reservadas!
Portas numeradas de 0 a 1024 são privi...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Java
Necessário instalar o Apache XML-RPC
Implementação XML-RPC em Jav...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Cliente Java
Prof. Fabio Alexandre Spanhol, M. Sc. 32
Próximos SlideShares
Carregando em…5
×

XML-RPC: Tópicos Introdutórios

1.340 visualizações

Publicada em

Tópico de aula da disciplina Redes de Computadores.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.340
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
22
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

XML-RPC: Tópicos Introdutórios

  1. 1. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
  2. 2. 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 ser executada em outro espaço de endereçamento, normalmente remoto abstraçã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 1970 Termo cunhado por Bruce Jay Nelson, na Xerox Prof. Fabio Alexandre Spanhol, M.Sc. 2
  3. 3. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ RPC Precursores 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 ARPANet Xerox (1981) • Primeiro uso comercial • Batizado “Courier” System Prof. Fabio Alexandre Spanhol, M.Sc. 3
  4. 4. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ RPC Influenciou 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
  5. 5. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ RPC Anos 1990: Ascenção dos Padrões Web Codificação baseada em XML Independência de plataforma Linguagem agnóstica Prof. Fabio Alexandre Spanhol, M. Sc. 5
  6. 6. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC XML-RPC é simplesmente RPC codificado em XML! Criado em 1998 por Dave Winer Somente 8 tipos de dados básicos Simples, fácil de usar A especificação possui apenas 7 páginas (includindo exemplos e FAQ) Cresceu dentro do Simple Object Access Protocol (SOAP) que tem mais recursos (e mais complexidade)! Prof. Fabio Alexandre Spanhol, M.Sc. 6
  7. 7. 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 linguagem comum Também chamado de “lightweight”, mas a especificação tem mais de 77000 palavras (40 páginas)! Prof. Fabio Alexandre Spanhol, M.Sc. 7
  8. 8. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC Prof. Fabio Alexandre Spanhol, M.Sc. 8
  9. 9. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC XML-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
  10. 10. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Modelo Cliente e Servidor devem entender um ao outro Prof. Fabio Alexandre Spanhol, M.Sc. 10 Wieviel Uhr ist es? ?
  11. 11. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Modelo Ambos devem acordar uma linguagem comum Prof. Fabio Alexandre Spanhol, M.Sc. 11 Wieviel Uhr ist es? Quelle heure est-il? 7pm! What’s the time?
  12. 12. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Modelo Linguagem comum Cliente Codifica Servidor Decodifica Prof. Fabio Alexandre Spanhol, M.Sc. 12 Wieviel Uhr ist es? Quelle heure est-il? 7pm! What’s the time?Encode Decode
  13. 13. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Modelo XML-RPC usa XML como linguagem comum Prof. Fabio Alexandre Spanhol, M.Sc. 13 Python, Java, C++, etc. Python, Java, C++, etc. XMLEncode Decode
  14. 14. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Abstração Bibliotecas RPC abstraem os detalhes da comunicação em rede Implementação em nível de sockets depende da biblioteca RPC utilizada Não é uma solução perfeita – a rede pode cair, pacotes podem ser perdidos, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 14
  15. 15. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operação XML-RPC HTTP implica em uma conexão TCP em baixo nível Cliente 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
  16. 16. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operação XML-RPC Prof. Fabio Alexandre Spanhol, M.Sc. 16
  17. 17. 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 rede cai durante a operação? Prof. Fabio Alexandre Spanhol, M.Sc. 17
  18. 18. 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
  19. 19. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Tipos de Dados XML-RPC int Inteiro sinalizado de 32 bits *Mapeado para números inteiros em python string ASCII strings (limitado a caracteres permitidos em XML) Pode conter bytes NULL embutidos boolean double ponto flutuante de precisão dupla *Mapeado para números em ponto flutuante em python dateTime pouca utilidade (sem suporte a time zones) Prof. Fabio Alexandre Spanhol, M.Sc. 19
  20. 20. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Tipos de Dados XML-RPC struct pares que mapeiam chave-valor Equivalente a dicionários em python array vetores de dados de qualquer tipo (pode misturar tipos) Equivalente a listas em python base64 dados binários arbitrários codificados no formato base64 "Manipulador" para qualquer tipo que não sejam os tipos anteriores Objetos python podem ser mapeados em base64 Strings com caracteres inválidos em XML podem ser codificadas em base64 Prof. Fabio Alexandre Spanhol, M.Sc. 20
  21. 21. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Independência de Linguagem Usando 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
  22. 22. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Python Baterias incluídas! Já na biblioteca padrão Basta usar os módulos xmlrpc.client e xmlrpc.server Prof. Fabio Alexandre Spanhol, M. Sc. 22
  23. 23. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Módulos XML-RPC para Python xmlrpc.client Rotinas para implementar clientes XML-RPC Classe xmlrpc.client.ServerProxy gerencia a comunicação com um servidor remoto xmlrpc.server Rotinas para implementar servidores XML-RPC Classe xmlrpc.server.SimpleXMLRPCServer cria instância de um servidor XML-RPC Classe xmlrpc.server.DocXMLRPCServer • Extensão • Provê documentação na requisição HTTP GET Prof. Fabio Alexandre Spanhol, M.Sc. 23
  24. 24. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DocXMLRPCServer DocXMLRPCServer provê serviços RPC em operações HTTP POST (dos clientes) documentação HTML em operações HTTP GET (dos navegadores web) Prof. Fabio Alexandre Spanhol, M.Sc. 24
  25. 25. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Documentação Automática Python XML-RPC usa docstrings para gerar documentação em HTML Visualizado navegando em http://localhost:8888 com um navegador web Em geral http://host:port Também pode ser visto usando help(nome_método) de dentro do interpretrador python após ter importado o módulo Prof. Fabio Alexandre Spanhol, M.Sc. 25
  26. 26. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Métodos HTML Cosméticos Membros da classe DocXMLRPCServer set_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 de métodos Prof. Fabio Alexandre Spanhol, M.Sc. 26
  27. 27. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Servidor Python Prof. Fabio Alexandre Spanhol, M.Sc. 27
  28. 28. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Cliente Python Prof. Fabio Alexandre Spanhol, M.Sc. 28
  29. 29. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Endereçamento Para servidores locais, use localhost nos métodos client/server Ex.: 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 FQDN server = SimpleXMLRPCServer ((“host3.universidade.br”, 8888)) Prof. Fabio Alexandre Spanhol, M.Sc. 29
  30. 30. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Endereçamento Use portas não-reservadas! Portas numeradas de 0 a 1024 são privilegiadas e restritas a serviços do SO Use numeração de portas acima de 1024 Evite portas como 8080 (porta alternativa para servidores HTTP), 5432 (Postgresql), 9600-9800 (Condor), 1521 (Oracle), 3306 (Mysql), etc. Prof. Fabio Alexandre Spanhol, M.Sc. 30
  31. 31. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Java Necessá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
  32. 32. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Cliente Java Prof. Fabio Alexandre Spanhol, M. Sc. 32

×