A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Prof. Marcus Rodrigues

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Prof. Marcus Rodrigues"— Transcrição da apresentação:

1 Sistemas Distribuídos Prof. Marcus Rodrigues marcus.rodrigues@gmail.com

2 Comunicação em Sistemas Distribuídos Capítulo 2 – Aula 8

3 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Comunicação em Sistemas Distribuídos Material baseado no livro Distributed Systems: Principles and Paradigms Prentice Hall Copyright © Andrew S. Tanembaum, Maarten van Steen, 2001

4 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Invocação de Método Remoto Uso de vantagens do paradigma de orientação à objetos em comunicação distribuída Encapsulamento! RPC aplicada a objetos Invocação de Método Remoto (RMI – Remote Method Invocation) Invocação de um método entre objetos localizados em diferentes processos, estejam estes na mesma máquina ou não.

5 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Objetos Distribuídos (1) Estado Método... e Interface Um objeto pode implementar múltiplas interfaces. Da mesma forma que, dada uma definição de interface, podem haver vários objetos que oferecem uma implementação para essa interface.

6 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Objetos Distribuídos (2) 2-16

7 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Objetos Distribuídos (3) “O estado de objetos distribuído não é distribuído” Apenas as interfaces implementadas pelo objeto são disponibilizadas em outras máquinas Objetos remotos Objetos persistentes x Objetos transientes

8 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Associando um cliente a um objeto (1) Referência a objeto remoto outros objetos podem invocar métodos de um objeto remoto somente se tiverem acesso a sua referência de objeto remoto identificador único do objeto no sistema pode ser utilizado como parâmetro ou resultado de uma invocação de método remoto Interface remota: todo objeto remoto possui uma interface remota que especifica qual dos métodos pode ser invocado remotamente implementada pela classe do objeto remoto. Associação de objetos (binding) Binding implícito Binding explícito

9 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Associando um cliente a um objeto (2) a) Um exemplo com binding implícito usando apenas referência global b) Um exemplo com binding explícito usando referências locais e globais Distr_object* obj_ref;//Declare a systemwide object reference obj_ref = …;// Initialize the reference to a distributed object obj_ref-> do_something();// Implicitly bind and invoke a method (a) Distr_object objPref;//Declare a systemwide object reference Local_object* obj_ptr;//Declare a pointer to local objects obj_ref = …;//Initialize the reference to a distributed object obj_ptr = bind(obj_ref);//Explicitly bind and obtain a pointer to the local proxy obj_ptr -> do_something();//Invoke a method on the local proxy (b)

10 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Invocação estática x Invocação dinâmica (1) RMI x RPC? Referência de objeto Suporte a RMI Invocação estática Uso de linguagens de definição de interfaces (IDL) para especificação da interface do objeto Invocação dinâmica Geração automática do stub usando alguma linguagem orientada a objetos A invocação do método é composta em tempo de execução A aplicação seleciona em tempo de execução qual o método será invocado no objeto remoto

11 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Invocação estática x Invocação dinâmica (2) Suporte a RMI Invocação dinâmica x Invocação estática Exemplo: invoke(objeto, metodo, parametros_de_entrada, parametros_de_saida); append(int) fobject Invocação estática fobject.append(int); Invocação dinâmica invoke(fobject, id(append), int); Atributos:...

12 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Passagem de parâmetros Passando um objeto por referência ou por valor 2-18

13 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Considerações de projeto Transparência A latência de uma chamada local é bastante menor que de uma chamada remota. Chamadas remotas são mais vulneráveis a falhas do que chamadas locais. As invocações de métodos remotos são iguais as invocações aos métodos locais, porém as diferenças entre os objetos remotos e locais devem estar expressos nas suas interfaces. (e.g. as classes de objetos remotos em Java implementam a interface Remote)

14 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Modelo de objetos distribuídos DCE a) Objetos dinâmicos distribuídos no DCE b) Objetos nomeados distribuídos

15 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Java RMI Utiliza mesma sintaxe para invocação de métodos de objetos locais ou remotos Todo objeto remoto implementa uma interface remota: extende a interface java.rmi.Remote public interface MyRemoteClass extends java.rmi.Remote todos os métodos da interface devem prever a exceção java.rmi.RemoteException (cláusula throws) além das exceções próprias da aplicação

16 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Java RMI – IDL sintaxe e semântica de Java desvantagem: não suporta outras linguagens!

17 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Exemplo - objeto remoto

18 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Exemplo - compilação Compilando a implementação do objeto remoto javac CalculatorImpl.java Geração dos stubs rmic CalculatorImpl gera os arquivos CalculatorImpl_Skel.class CalculatorImpl_Stub.class

19 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Exemplo - servidor

20 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Exemplo - cliente

21 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Exemplo - execução Compilando servidor e cliente e executando a aplicação

22 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Java RMI Passagem de parâmetros e resultados objetos remotos: referência do objeto remoto objetos não-remotos: cópia do objeto (classe deve estender a classe Serializable) Carga de classes carregamento automático de classes de objetos desconhecidos na JVM flexibilidade (e.g. extensão de funcionalidades de um módulo) servidor deve criar RMISecurityManager para segurança

23 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Java RMI rmiregistry (Binder) deve ser executado em toda máquina que hospeda objetos remotos mantém uma tabela para mapeamento da representação textual dos objetos aos objetos localizados na máquina representação textual rmi: //computerName:port/objectName acessado pelos métodos da classe Naming

24 Prof. Marcus Rodrigues Sistemas Distribuídos – Capítulo 2 – Invocação de Método Remoto Desenvolvimento usando Java RMI Passos Projetar e implementar os componentes da aplicação distribuída definição das interfaces remotas implementação dos objetos remotos implementação do servidor e clientes Compilação dos códigos-fontes e geração dos stubs geração das classes do servidor e cliente (javac) criação dos stubs (rmic) Iniciar a aplicação iniciar o binder para guardar os objetos remotos (rmiregistry) iniciar o servidor e cliente(s)


Carregar ppt "Sistemas Distribuídos Prof. Marcus Rodrigues"

Apresentações semelhantes


Anúncios Google