29
RMI (Remote Method Invocation) Acadêmico: Helio Henrique Lopes Costa Monte Alto R.A.: 53729 Disciplina: Sistemas Distribuídos Professor: Flávio Arnaldo Braga da Silva

Rmi (remote method invocation)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Rmi (remote method invocation)

RMI (Remote Method Invocation)

Acadêmico: Helio Henrique Lopes Costa Monte AltoR.A.: 53729

Disciplina: Sistemas DistribuídosProfessor: Flávio Arnaldo Braga da Silva

Page 2: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 3: Rmi (remote method invocation)

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);

Page 4: Rmi (remote method invocation)

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)

Page 5: Rmi (remote method invocation)

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

Page 6: Rmi (remote method invocation)

Introdução

Filosofia do Java: “Escreva uma vez, rode em qualquer lugar”;

RMI estende esse modelo: “Rode em todos os lugares”;

Page 7: Rmi (remote method invocation)

Portabilidade

Conexão com sistemas legados: JNI (Java Native Interface);

Conexão com bancos de dados: JDBC (Java Database Connectivity)

Page 8: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 9: Rmi (remote method invocation)

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;

Page 10: Rmi (remote method invocation)

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;

Page 11: Rmi (remote method invocation)

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;

Page 12: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 13: Rmi (remote method invocation)

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

Page 14: Rmi (remote method invocation)

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;

Page 15: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 16: Rmi (remote method invocation)

Arquitetura

Page 17: Rmi (remote method invocation)

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;

Page 18: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 19: Rmi (remote method invocation)

Exemplos

Criando uma interface do objeto remoto

Page 20: Rmi (remote method invocation)

Exemplos

Criando a classe que implementará a interface FileInterface

Page 21: Rmi (remote method invocation)

Exemplos

Criando o servidor

Page 22: Rmi (remote method invocation)

Exemplos

Criando um cliente

Page 23: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 24: Rmi (remote method invocation)

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;

Page 25: Rmi (remote method invocation)

RMI x CORBA x Web Services

Geração de componentes do cliente e servidor para as três tecnologias (GRAY, 2004)

Page 26: Rmi (remote method invocation)

RMI x CORBA x Web Services

Medidas de tempo de CPU (GRAY, 2004)

Análises de tráfego (GRAY, 2004)

Page 27: Rmi (remote method invocation)

SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências

Page 28: Rmi (remote method invocation)

Aplicações

Sistemas distribuídos complexos;Clusters de estações de trabalhos;Sistemas de gerenciamento de redes;Aplicações distribuídas que requerem

escalabilidade;

Page 29: Rmi (remote method invocation)

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