Upload
helio-henrique-monte-alto
View
1.754
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
RMI (Remote Method Invocation)
Acadêmico: Helio Henrique Lopes Costa Monte AltoR.A.: 53729
Disciplina: Sistemas DistribuídosProfessor: Flávio Arnaldo Braga da Silva
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
IntroduçãoObjetos distribuídos:
Forma de implementar aplicações cliente/servidor;
Isolam clientes da implementação dos serviços;Protocolo básico:
1. Cliente manda mensagem a um objeto remoto (através de uma interface de serviços);
2. Objeto interpreta mensagem;3. Objeto seleciona um comportamento, que será
executado pelo próprio objeto ou por um broker (intermediário / agente);
IntroduçãoRMI (Remote Method Invocation) genérico:
“A RPC (Remote Procedure Call) está para a RMI assim como a chamada de procedimento está para a invocação de objetos.” (Coulouris et al., 2007)
Implementada em uma camada de middleware;
Camada de middleware (Coulouris et al., 2007)
IntroduçãoO que é Java RMI?
Interface de programação (API) para JavaRPC com a flexibilidade do Java, i. e., da
orientação a objetos Ex: polimorfismo
Objetos distribuídosComunicação entre JVMs
Introdução
Filosofia do Java: “Escreva uma vez, rode em qualquer lugar”;
RMI estende esse modelo: “Rode em todos os lugares”;
Portabilidade
Conexão com sistemas legados: JNI (Java Native Interface);
Conexão com bancos de dados: JDBC (Java Database Connectivity)
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
VantagensEm relação a sistemas RPC tradicionais:
Abordagem orientada a objetos;Passagem de mensagens com tipos complexos:
objetos;
Flexibilidade de implementaçõesVários comportamentos podem ser definidos
para uma mesma interface;Ex: mudança de política;
VantagensPadrões de projeto de OO:
Melhoram qualidade do código
Fácil de escrever / fácil de usar: Aplicações cliente/servidor;Permite desenvolver sem se preocupar com
detalhes de comunicação;3 linhas de código para declarar um servidor;Desenvolvimento rápido, rápida prototipação;
VantagensSegurança:
Proteção contra código malicioso;Mecanismos próprios do Java;Políticas de segurança;RMISecurityManager;
Conexão com sistemas legados;Escreva uma vez, rode onde quiser;Coletor de lixo distribuído;Computação paralela;
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
FuncionamentoFuncionamento básico
Em (1), busca pelo serviço e pega o endereço. Em (2), ele acessa o serviço pegando uma referência à interface do objeto. Em (3), ele chama um método fornecido pelo objeto
FuncionamentoConsiderações importantes:
Os métodos do objeto remoto podem ser chamados como se fossem de um objeto local;
Objetos remotos podem ser passados por parâmetro ou retornados como resultado;
Objetos são definidos como: Interface: define os comportamentos, i. e., os
métodos disponíveis; é a classe à qual o cliente referencia;
Implementação: implementa os comportamentos, que são executados remotamente no servidor;
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
Arquitetura
ArquiteturaGerenciador de referências remotas:
mapeamento de referências locais/remotas;Stub:
proxy presente no lado do clientecomporta-se como objeto local, mas em vez de
executar uma invocação local, encaminha uma mensagem a um objeto remoto
Skeleton:invoca o método correspondente à invocação
do cliente;
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
Exemplos
Criando uma interface do objeto remoto
Exemplos
Criando a classe que implementará a interface FileInterface
Exemplos
Criando o servidor
Exemplos
Criando um cliente
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
RMI x CORBA x Web ServicesWeb Services diferem bastante dos outros
dois:Não há objetos em WS;Maior interoperabilidade:
Ótimo para Web, usando HTTP, por exemplo;Desempenho geralmente pior:
HTTP e XML geram muita carga quando deve haver muitas trocas de mensagens;
Custo do processamento (parsing) de XML é mais alto;
RMI x CORBA x Web Services
Geração de componentes do cliente e servidor para as três tecnologias (GRAY, 2004)
RMI x CORBA x Web Services
Medidas de tempo de CPU (GRAY, 2004)
Análises de tráfego (GRAY, 2004)
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
Aplicações
Sistemas distribuídos complexos;Clusters de estações de trabalhos;Sistemas de gerenciamento de redes;Aplicações distribuídas que requerem
escalabilidade;
Referências COULOURIS G., DOLLIMORE J., KINDBERG T. “Sistemas Distribuídos:
Conceitos e Projeto”. Bookman. Quarta edição. 2007. Distributed Java Programming with RMI and CORBA. Disponível em http
://java.sun.com/developer/technicalArticles/RMI/rmi_corba/. Acessado em Junho de 2011;
GRAY, N. A. B. Comparison of Web Services, Java-RMI, and CORBA service implementations. Fifth Australasian Workshop on Software and System Architectures. 2004
Java Remote Method Invocation - Distributed Computing for Java. Disponível em: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138781.html. Acessado em Junho de 2011;
MAASSEN, J., et al. An efficient implementation of Java's remote method invocation. Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming. 1999;
Tutorial RMI - Remote Method Invocation. Disponível em : http://www.devmedia.com.br/post-6442-Tutorial-RMI-Remote-Method-Invocation.html. Acessado em Junho de 2011