Distribuídos
Licenciatura em Engenharia Informática
3º Ano – 5º Semestre
Ano lectivo 2010-2011
Cliente Servidor
... Dados como parâmetros
A=servfunc(p1,p2); r_type
... servfunc(p1_type p1, p2_type p2)
{
...
}
Dados como
valores de retorno
Processo A Processo B
Alexandre Fonte Material de Apoio a AD, ESTCB Edição 2010-2011
Invocação Remota de Métodos
Remote Method Invocation (RMI)
• Semelhante aos RPCs, mas para um ambiente Orientado ao Objecto
• Método que permite a invocação de métodos sobre objectos em execução
numa máquina remota (num espaço de endereçamento diferente)
cliente A Objecto Remoto
metodo(Obj1 a,Obj2
C=Objecto.metodo Dados como parametros b) {
(A,B) //Implementação do
método
.
.
Dados como .
}
valores de retorno
Legenda:
remote
local
C
E
invocation
invocation
local
remote
invocation
invocation
F
B
local
A
invocation
D
Cada processo contêm objectos, alguns dos objectos podem receber invocações
remotas de métodos, outros apenas invocações locais
Os objectos que podem receber invocações remotas de métodos são chamados de
objectos remotos
Dois conceitos fundamentais:
Para invocação de métodos remotos os objectos clientes precisam de conhecer
as referências dos objectos remotos
A interface remota de um objecto especifica quais os métodos que podem ser
invocados remotamente
3- Estabelecimento da ligação
Cliente Servidor
Serviço de
Nomes
Rotina de despacho do
proc 1(a , b)
proc 1
(Dispatcher)
Porto
Proc 1 a,b Rotina de despacho do proc 2(a , b)
proc 2
(Dispatcher)
Camada de Transporte
Alexandre Fonte Camada
Material de Apoio a AD,deESTCB
Transporte
Edição 2010-2011
Ilustração RPC (em acção)
Processo Servidor
Processo Cliente 6. O stub servidor faz
1. O cliente chama o Implementação uma chamada local ao
Procedimento add “add”
5. O stub servidor
“desempacota” a
2. O stub cliente mensagem
constrói a mensagem
4. O SO servidor
despacha a mensagem
SO Cliente SO Servidor
para o stub servidor
client
server
remote
object A
proxy for B
skeleton
object B
Request
& dispatcher
for B s class
Reply
Remote
Communication
Communication
Remote reference
reference module
module
module
module
Obj/procedimento
IDL
Repositório
RIF
de Interfaces
Compilador
IDL
using System;
namespace IRemoting;
No .Net não é preciso distinguir
{ a interface remota da local
public interface ContaBancaria É inferida durante a
double SaldoActual {get;} implementação do servidor
module banco {
interface conta {
readonly attribute string titular;
attribute float saldo;
void deposito(in float quantia, out float novosaldo);
void levantamento (in float quantia, out float novosaldo);
};
}
2) RMI
Cliente RMI 1)
3)
RMI Servidor
RMI