RMI (Remote MethodInvocation)Acadêmico: Helio Henrique Lopes Costa Monte AltoR.A.: 53729Disciplina: 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:Cliente manda mensagem a um objeto remoto (através de uma interface de serviços);Objeto interpreta mensagem;Objeto seleciona um comportamento, que será executado pelo próprio objeto ou por um broker (intermediário / agente);
IntroduçãoRMI (Remote MethodInvocation) 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 objetosEx: polimorfismoObjetos distribuídosComunicação entre JVMs
IntroduçãoFilosofia do Java: “Escreva uma vez, rode em qualquer lugar”;RMI estende esse modelo: “Rode em todos os lugares”;
PortabilidadeConexão com sistemas legados: JNI (Java Native Interface);Conexão com bancos de dados: JDBC (Java DatabaseConnectivity)
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ódigoFá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ásicoEm (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 remotoSkeleton:invoca o método correspondente à invocação do cliente;
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
ExemplosCriando uma interface do objeto remoto
ExemplosCriando a classe que implementará a interface FileInterface
ExemplosCriando o servidor
ExemplosCriando 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 ServicesGeração de componentes do cliente e servidor para as três tecnologias (GRAY,  2004)
RMI x CORBA x Web ServicesMedidas de tempo de CPU (GRAY, 2004)Análises de tráfego (GRAY,  2004)
SumárioIntroduçãoPortabilidadeVantagensFuncionamentoArquiteturaExemplosRMI x CORBA x Web ServicesAplicaçõesReferências
AplicaçõesSistemas distribuídos complexos;Clusters de estações de trabalhos;Sistemas de gerenciamento de redes;Aplicações distribuídas que requerem escalabilidade;
ReferênciasCOULOURIS G., DOLLIMORE J., KINDBERG T. “SistemasDistribuídos: Conceitos e Projeto”. Bookman. Quartaedição. 2007.Distributed Java Programming with RMI and CORBA. Disponívelemhttp://java.sun.com/developer/technicalArticles/RMI/rmi_corba/. AcessadoemJunho de 2011;GRAY, N. A. B. Comparison of Web Services, Java-RMI, and CORBA service implementations. Fifth Australasian Workshop on Software and System Architectures. 2004Java Remote Method Invocation - Distributed Computing for Java. Disponívelem: 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ívelem : http://www.devmedia.com.br/post-6442-Tutorial-RMI-Remote-Method-Invocation.html. Acessado em Junho de 2011

Rmi (remote method invocation)