Este documento discute sistemas distribuídos, objetos distribuídos e invocação remota. Aborda conceitos como RPC, RMI e middleware, além de interfaces em sistemas distribuídos, comunicação entre processos distribuídos, modelo de objeto distribuído e implementação de RMI em Java.
2. INTRODUÇÃO
RPC:
• chamada de procedimento remoto;
• programas clientes chamarem procedimentos de programas
servidores.
RMI:
• invocação de método remoto;
• objetos de diferentes processos se comunicam;
• objeto que está em um processo pode invocar métodos de
um objeto que está em outro processo.
2
3. INTRODUÇÃO
Middleware
Software que fornece um modelo de programação acima dos
blocos de construção básicos de processos e passagem de
mensagens.
Fornece: invocações a métodos remotos, transparência da
localização e independência dos detalhes dos protocolos de
comunicação, sistemas operacionais e hardware.
3
6. INTERFACES EM
SISTEMAS DISTRIBUÍDOS
Interfaces de serviço:
• Cada servidor fornece um conjunto de procedimentos que
estão disponíveis para uso dos clientes.
Interfaces remotas:
• Especifica os métodos de um objeto que estão
disponíveis para invocação por parte dos objetos de outros
processos.
• Podem passar objetos com argumentos e resultados dos
métodos.
6
9. O MODELO DE
OBJETO DISTRIBUÍDO
Cada processo contém um conjunto de objetos, dos quais alguns
podem receber invocações a métodos locais e remotos e outros
somente locais.
Objetos podem invocar métodos de um objeto remoto se tiverem
acesso á sua referência de objeto remoto.
Todo objeto remoto tem uma interface remota especificando quais
métodos podem ser invocados de forma remota.
9
10. INTERFACES
REMOTAS
A classe de um objeto remoto implementa os métodos de sua
interface remota.
Objetos em outros processos somente invocam métodos
pertencentes à interface remota.
10
12. IMPLEMENTAÇÃO DE
RMI
Software RMI: camada de software – middleware – entre os
objetos do aplicativo e os módulos de comunicação e de
referência remota.
12
13. IMPLEMENTAÇÃO DE
RMI
• Proxy: torna a invocação do método remoto transparente ao
cliente, comportando-se como um objeto local para o
invocador; mas, em vez de executar uma invocação local, ele
a encaminha em uma mensagem para um objeto remoto.
Existe um proxy para cada objeto remoto que um processo
faz referência.
13
14. IMPLEMENTAÇÃO DE
RMI
• Despachante: um servidor tem um despachante e um
esqueleto para cada classe que representa o objeto remoto.
O despachante recebe uma mensagem de requisição do
módulo de comunicação e seleciona o método apropriado no
esqueleto, despachando a mensagem de requisição.
14
15. IMPLEMENTAÇÃO DE
RMI
• Esqueleto: desempacota os argumentos na mensagem de
requisição e invoca o método correspondente no
servente. Depois, espera que a requisição termine e
empacota o resultado em uma mensagem de resposta que é
enviada ao método do proxy que fez a requisição.
15
16. JAVA RMI
Extensão do modelo de objeto Java para dar suporte para
objetos distribuídos em Java.
Permite que objetos invoquem métodos em objetos remotos
usando a mesma sintaxe de invocações locais.
Mais simples construir aplicações RMI do que aplicações
com RPC ou CORBA.
16
17. JAVA RMI
Necessita de tratar a exceção Remote Exception e
implementar a interface Remote.
Exige suporte a TCP/IP e um serviço de nomes de objetos
(rmiregistry), que acompanha o JAVA JDK/SDK.
• O serviço de nomes RMI Registry oferece informações sobre
a localização dos objetos remotos.
• Traduz uma tabela de nomes textuais na forma
//nomeComputador:porta/nomeObjeto em objetos remotos
contidos no computador.
17
18. JAVA RMI
Geração de classes proxies, despachantes e esqueletos: são geradas
automaticamente por um compilador de interface.
O conjunto de métodos oferecidos por um objeto remoto é definido como
uma interface Java implementada do objeto remoto.
O compilador para Java RMI gera as classes de proxy, despachante e
esqueleto a partir da classe do objeto remoto.
18
19. INTERFACES REMOTAS
NO JAVA RMI
As interfaces remotas são definidas pela ampliação de uma
interface chamada Remote, do pacote java.rmi.
Os métodos disparam a exceção RemoteException, além das
possíveis exceções do aplicativo.
19