SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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 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
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
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
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
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
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
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 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Á
Modelo
Cliente e Servidor devem entender um ao
outro
Prof. Fabio Alexandre Spanhol, M.Sc. 10
Wieviel Uhr
ist es? ?
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?
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
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
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
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
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 rede
cai 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-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
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
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
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
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
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
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
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
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
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
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
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
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
XML-RPC: Cliente Java
Prof. Fabio Alexandre Spanhol, M. Sc. 32

Mais conteúdo relacionado

Mais procurados

Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicaçãoSimba Samuel
 
Sessão do Modelo OSI-Camada 5
Sessão do Modelo OSI-Camada 5Sessão do Modelo OSI-Camada 5
Sessão do Modelo OSI-Camada 5Hélder Batista
 
Principais protocolos da internet
Principais protocolos da internetPrincipais protocolos da internet
Principais protocolos da internetAlessandro Fazenda
 
(ACH2044) Sistemas Operacionais - Aula 22
(ACH2044) Sistemas Operacionais - Aula 22(ACH2044) Sistemas Operacionais - Aula 22
(ACH2044) Sistemas Operacionais - Aula 22Norton Trevisan Roman
 
Ac m4 -_tarefa_video_-_petro
Ac m4 -_tarefa_video_-_petroAc m4 -_tarefa_video_-_petro
Ac m4 -_tarefa_video_-_petrokamatozza
 
Camada De Aplicação
Camada De AplicaçãoCamada De Aplicação
Camada De AplicaçãoLyous
 
(ACH2044) Sistemas Operacionais - Aula 07
(ACH2044) Sistemas Operacionais - Aula 07(ACH2044) Sistemas Operacionais - Aula 07
(ACH2044) Sistemas Operacionais - Aula 07Norton Trevisan Roman
 
(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02Norton Trevisan Roman
 
Esquema tcp ip trabalho
Esquema tcp ip trabalhoEsquema tcp ip trabalho
Esquema tcp ip trabalhoPaula Lopes
 
51952248 1285455275-seguranca-de-redes
51952248 1285455275-seguranca-de-redes51952248 1285455275-seguranca-de-redes
51952248 1285455275-seguranca-de-redesMarco Guimarães
 
Modelo osi tcp ip e protocolos
Modelo osi tcp ip e protocolosModelo osi tcp ip e protocolos
Modelo osi tcp ip e protocolosAtanasio Pascoal
 
Sistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo RealSistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo RealDev PP
 
Desofuscando um webshell em php h2hc Ed.9
Desofuscando um webshell em php h2hc Ed.9Desofuscando um webshell em php h2hc Ed.9
Desofuscando um webshell em php h2hc Ed.9Ricardo L0gan
 

Mais procurados (20)

Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicação
 
Sessão do Modelo OSI-Camada 5
Sessão do Modelo OSI-Camada 5Sessão do Modelo OSI-Camada 5
Sessão do Modelo OSI-Camada 5
 
Camada 7 do modelo OSI
Camada 7 do modelo OSICamada 7 do modelo OSI
Camada 7 do modelo OSI
 
Iptables layer7
Iptables layer7Iptables layer7
Iptables layer7
 
Principais protocolos da internet
Principais protocolos da internetPrincipais protocolos da internet
Principais protocolos da internet
 
Protocolo UDP
Protocolo UDPProtocolo UDP
Protocolo UDP
 
Protocolos
ProtocolosProtocolos
Protocolos
 
(ACH2044) Sistemas Operacionais - Aula 22
(ACH2044) Sistemas Operacionais - Aula 22(ACH2044) Sistemas Operacionais - Aula 22
(ACH2044) Sistemas Operacionais - Aula 22
 
Trabalho camada de transporte
Trabalho camada de transporteTrabalho camada de transporte
Trabalho camada de transporte
 
Ac m4 -_tarefa_video_-_petro
Ac m4 -_tarefa_video_-_petroAc m4 -_tarefa_video_-_petro
Ac m4 -_tarefa_video_-_petro
 
Camada De Aplicação
Camada De AplicaçãoCamada De Aplicação
Camada De Aplicação
 
(ACH2044) Sistemas Operacionais - Aula 07
(ACH2044) Sistemas Operacionais - Aula 07(ACH2044) Sistemas Operacionais - Aula 07
(ACH2044) Sistemas Operacionais - Aula 07
 
O que é um protocolo de rede
O que é um protocolo de redeO que é um protocolo de rede
O que é um protocolo de rede
 
(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02
 
Esquema tcp ip trabalho
Esquema tcp ip trabalhoEsquema tcp ip trabalho
Esquema tcp ip trabalho
 
Artigo Wireshark
Artigo WiresharkArtigo Wireshark
Artigo Wireshark
 
51952248 1285455275-seguranca-de-redes
51952248 1285455275-seguranca-de-redes51952248 1285455275-seguranca-de-redes
51952248 1285455275-seguranca-de-redes
 
Modelo osi tcp ip e protocolos
Modelo osi tcp ip e protocolosModelo osi tcp ip e protocolos
Modelo osi tcp ip e protocolos
 
Sistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo RealSistemas de Comunicação em Tempo Real
Sistemas de Comunicação em Tempo Real
 
Desofuscando um webshell em php h2hc Ed.9
Desofuscando um webshell em php h2hc Ed.9Desofuscando um webshell em php h2hc Ed.9
Desofuscando um webshell em php h2hc Ed.9
 

Semelhante a XML-RPC: Tópicos Introdutórios

I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespesluizfelipemz
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAwolkartt_18
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2Eric Lemes
 
Carlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - PostfixCarlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - PostfixHeber Souza
 
Flex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQLFlex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQLelliando dias
 
Unidade1ainternet 110928173442-phpapp02
Unidade1ainternet 110928173442-phpapp02Unidade1ainternet 110928173442-phpapp02
Unidade1ainternet 110928173442-phpapp02DP7
 

Semelhante a XML-RPC: Tópicos Introdutórios (20)

Aula1 protocolos
Aula1 protocolosAula1 protocolos
Aula1 protocolos
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Aula2 protocolos
Aula2 protocolosAula2 protocolos
Aula2 protocolos
 
Ntop
NtopNtop
Ntop
 
http
httphttp
http
 
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespes
 
PHP 5.3 - Introdução
PHP 5.3 - IntroduçãoPHP 5.3 - Introdução
PHP 5.3 - Introdução
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNA
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
Aula4 protocolos v2
Aula4 protocolos  v2Aula4 protocolos  v2
Aula4 protocolos v2
 
teAula3 protocolos v2
teAula3 protocolos  v2teAula3 protocolos  v2
teAula3 protocolos v2
 
Aula3 protocolos
Aula3 protocolosAula3 protocolos
Aula3 protocolos
 
Glossário de Termos Técnicos em Redes de Computadores
Glossário de Termos Técnicos em Redes de ComputadoresGlossário de Termos Técnicos em Redes de Computadores
Glossário de Termos Técnicos em Redes de Computadores
 
Tdc 2013 eric lemes - integracoes entre sistemas-2
Tdc 2013   eric lemes - integracoes entre sistemas-2Tdc 2013   eric lemes - integracoes entre sistemas-2
Tdc 2013 eric lemes - integracoes entre sistemas-2
 
Artigo Wireshark
Artigo WiresharkArtigo Wireshark
Artigo Wireshark
 
Aula06 - postfix
Aula06 -  postfixAula06 -  postfix
Aula06 - postfix
 
Carlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - PostfixCarlos Beiga - Aula06 - Postfix
Carlos Beiga - Aula06 - Postfix
 
Aula06 - postfix
Aula06 -  postfixAula06 -  postfix
Aula06 - postfix
 
Flex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQLFlex 2.0 com PHP e MySQL
Flex 2.0 com PHP e MySQL
 
Unidade1ainternet 110928173442-phpapp02
Unidade1ainternet 110928173442-phpapp02Unidade1ainternet 110928173442-phpapp02
Unidade1ainternet 110928173442-phpapp02
 

Mais de Fabio Spanhol

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasFabio Spanhol
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Fabio Spanhol
 
Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Fabio Spanhol
 
Aprendizado Profundo & CNNs
Aprendizado Profundo & CNNsAprendizado Profundo & CNNs
Aprendizado Profundo & CNNsFabio Spanhol
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6 Fabio Spanhol
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6Fabio Spanhol
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosFabio Spanhol
 
Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Fabio Spanhol
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4Fabio Spanhol
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioFabio Spanhol
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Fabio Spanhol
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Fabio Spanhol
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?Fabio Spanhol
 
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem PythonFabio Spanhol
 

Mais de Fabio Spanhol (20)

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?
 
Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7
 
Aprendizado Profundo & CNNs
Aprendizado Profundo & CNNsAprendizado Profundo & CNNs
Aprendizado Profundo & CNNs
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4
 
Python tutorial-ed3
Python tutorial-ed3Python tutorial-ed3
Python tutorial-ed3
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino Médio
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Tutorial Python - 1
Tutorial Python - 1Tutorial Python - 1
Tutorial Python - 1
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?
 
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
 

XML-RPC: Tópicos Introdutórios

  • 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. 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. 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. 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. 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. 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC Prof. Fabio Alexandre Spanhol, M.Sc. 8
  • 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. 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. 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. 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. 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. 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. 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ Operação XML-RPC Prof. Fabio Alexandre Spanhol, M.Sc. 16
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Servidor Python Prof. Fabio Alexandre Spanhol, M.Sc. 27
  • 28. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Cliente Python Prof. Fabio Alexandre Spanhol, M.Sc. 28
  • 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. 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. 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. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ XML-RPC: Cliente Java Prof. Fabio Alexandre Spanhol, M. Sc. 32