ad cap5 invocacaoremota
TRANSCRIPT
-
8/8/2019 Ad Cap5 Invocacaoremota
1/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 1
Invocao Remota e ObjectosDistribudos
Licenciatura em Engenharia Informtica3 Ano 5 Semestre
Ano lectivo 2010-2011
-
8/8/2019 Ad Cap5 Invocacaoremota
2/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Invocao Remota e Objectos Distribudos Motivao Propriedades Objectos Distribudos Detalhes de Implementao Como so escondidos os detalhes de Implementao? Especificao de Interfaces e suporte ao Desenvolvimento Servidores de Nomes
Sumrio
-
8/8/2019 Ad Cap5 Invocacaoremota
3/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
As aplicaes distribudas podem ser implementadas sobre interfaces demensagens tipo Sockets. Em termos das noes habituais de redes estasinterfaces de programao so bastante intuitivas, mas originam algunsproblemas: Os programas C-S incluem muitos detalhes sem significado aplicacionalespecifico
Muitas das linhas de cdigo esto relacionadas com as comunicaes Criao dos Sockets Criao e preenchimento e interpretao das mensagens Envio e recepo de mensagens Seleco do cdigo a executar tendo em conta a mensagem recebida
Os programas C-S ficam estruturados em funo dos protocolos C-S Os servidores ficam estruturados em funo da lista de mensagens que sabem
processar Alm disto, os programadores esto habituados s linguagenstradicionais cujo fluxo de um programa normalmente corresponde
chamada de procedimentos (ou funes) de forma lgica e encadeada ou invocao de mtodos sobre objectos
Invocao Remota - Motivao
-
8/8/2019 Ad Cap5 Invocacaoremota
4/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Invocao Remota - Motivao
Ser que no se podem automatizar as interacescliente-servidor?
Uma extenso natural aos ambientes distribudos serpermitir: a execuo de procedimentos noutra mquina
E.g., Sun RPC, Microsoft RPC, DCE a execuo de mtodos sobre objectos remotos, isto
se os procedimentos forem definidos no mbito de
um objecto E.g., Java RMI, CORBA, DCOM
-
8/8/2019 Ad Cap5 Invocacaoremota
5/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Invocao Remota de ProcedimentosRemote Procedure Calls (RPC)
Mtodo que permite a chamada de procedimentos remotos sobre outrosespaos de endereamento
Usa uma interface remota idntica interface local Os dados so passados como parmetros (transferncia de dados entre
espaos de endereamento.) Geralmente, a chamada de um RPC bloqueia at chegada dos resultados
da execuo do RPC (transferncia de controlo entre espaos deendereamento).
Cliente...
A=servfunc(p1,p2);...
Servidor
r_typeservfunc(p1_type p1, p2_type p2){
...}
Dados como parmetros
Dados comovalores de retorno
Processo A Processo B
-
8/8/2019 Ad Cap5 Invocacaoremota
6/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Invocao Remota de MtodosRemote Method Invocation (RMI)
cliente A Objecto Remoto
Dados como parametrosC=Objecto.metodo(A,B)
metodo(Obj1 a,Obj2b) {//Implementao domtodo...}
Dados comovalores de retorno
Semelhante aos RPCs, mas para um ambiente Orientado ao Objecto Mtodo que permite a invocao de mtodos sobre objectos em execuo
numa mquina remota (num espao de endereamento diferente)
-
8/8/2019 Ad Cap5 Invocacaoremota
7/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Legenda: Cliente RPC/RMI: processo que invoca um procedimento/mtodo em tudo
semelhante a um procedimento/mtodo local normal.
Servidor RPC/RMI: processo que executa o procedimento/mtodo.
O envio e recepo de mensagens so escondidos dos programas cliente eservidor RPC/RMI.
Invocao Remota
-
8/8/2019 Ad Cap5 Invocacaoremota
8/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Propriedades dos Sistemas RPC/RMI
Encapsula os mecanismos de IPC convencionais na formade chamadas de procedimentos ou mtodos remotos Utiliza outros mtodos IPC para manipular as comunicaes C/S E.g., Sockets, ou NetBIOS
Simplifica o desenvolvimento e torna as aplicaesindependentes dos protocolos de comunicao utilizados
Simplifica a disponibilizao de servios Interface bem definida, documentada e independente dos protocolos de
transporte Sistema de registo e procura de servios
Nos RPCs o sistema de registo fornece o porto do servidor RPC Nos RMIs o sistema de registo fornece a referncia do Objecto remoto
-
8/8/2019 Ad Cap5 Invocacaoremota
9/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Objectos Distribudos
invocation invocationremoteinvocationremote
locallocal
localinvocationinvocationA B
C
DE
F
Cada processo contm objectos, alguns dos objectos podem receber invocaesremotas de mtodos, outros apenas invocaes locais
Os objectos que podem receber invocaes remotas de mtodos so chamados deobjectos remotos
Dois conceitos fundamentais: Para invocao de mtodos remotos os objectos clientes precisam de conhecer
as referncias dos objectos remotos A interface remota de um objecto especifica quais os mtodos que podem ser
invocados remotamente
-
8/8/2019 Ad Cap5 Invocacaoremota
10/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Conceitos Fundamentais do Modelo Obj. Dist:Referncias de Objectos Remotos
Uma referncia de objecto remoto constitui o identificador doobjecto durante um processamento de um pedido, evitando
ambiguidades na identificao e localizao de um objecto (noespao e no tempo). Conjuntamente com o nome do mtodo e os argumentos so
usadas para invocar mtodos sobre objectos remotos Tipicamente inclui:
o endereo do servidor e o porto para localizao do objecto, o nmero do objecto no processo remoto e a interface do objecto
remoto que indica os seus mtodos.
Endereo IP do
Servidor Porto Tempo Nmero do Obj Interface do Obj. remoto 32 bits 32 bits 32 bits 32 bits
-
8/8/2019 Ad Cap5 Invocacaoremota
11/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
A interface remota de um objecto especifica quais osmtodos que podem ser invocados remotamente. As interfaces remotas oferecem tambm a definio das assinaturas dos
mtodos, i.e., os tipos de entrada e sada de cada mtodo.
Um objecto remoto implementa os mtodos da suainterface remota. Os objectos locais (ao objecto remoto)) podem invocar estes e outros
mtodos no descritos na interface remota. Os objectos remotos (ao objecto remoto) podem invocar apenas o
mtodos descritos na interface remota.
As interfaces remotas no possuem mtodosconstrutores.
Conceitos Fundamentais do Modelo Obj. Dist:Interface Remota
-
8/8/2019 Ad Cap5 Invocacaoremota
12/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Conceitos Fundamentais do Modelo Obj. Dist:Interface Remota
-
8/8/2019 Ad Cap5 Invocacaoremota
13/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Conceitos Fundamentais:Invocao Remota de Mtodos (RMI)
uma extenso do mecanismo de Invocao local de mtodos.Permite a invocao de mtodos em objectos que vivem noutrosprocessos.
Uma vez obtida a referncia do objecto remoto, por parte docliente, possvel invocar os mtodos desse objecto.
Para invocar um mtodo particular de um objecto remoto, necessrio enviar o identificador do mtodo atravs da rede para ocomputador remoto (e.g., m1, m2, m3).
Em resumo, o objecto cliente pode invocar o mtodo de umobjecto remoto enviando simplesmente, para o computadorremoto, o identificador do objecto e o identificador do mtodo achamar
-
8/8/2019 Ad Cap5 Invocacaoremota
14/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 14
Como so escondidos osdetalhes da implementao das
comunicaes RPC/RMI?
-
8/8/2019 Ad Cap5 Invocacaoremota
15/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Detalhes da Implementao RPC/RMI:Lado Cliente
(1) Estabelecimento da Ligao Cliente-Servidor O cliente necessita de saber:
O modo de comunicao (stream ou datagrama) ouprotocolo de transporte a utilizar (e.g, UDP ou TCP).
Endereo da mquina servidor. Identificador do porto do servidor.
Solues para Localizar o Servidor: Codificao no programa cliente do porto do servidor (m!) Utilizao de um ficheiro local onde so registados os nomes
e endereos dos servidores RPC/Objectos RMI
Utilizao de um servio de nomes (melhor!)
-
8/8/2019 Ad Cap5 Invocacaoremota
16/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Passos do Estabelecimento de uma ligao C-S(Resumo) Localizao do servidor (consulta de um servidor de nomes) Estabelecimento de um canal de transporte Autenticao do C-S (Apenas do C ou de ambos)
Cliente
Servio deNomes
Servidor3- Estabelecimento da ligao
1- Registar o servio2- Localizar o Servidor
Detalhes da Implementao RPC/RMI:Lado Cliente
-
8/8/2019 Ad Cap5 Invocacaoremota
17/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
(2) Invocao de um procedimento/mtodo remoto Converso dos parmetros de entrada e construo da mensagem; Envio da mensagem e bloqueio aguardando resposta; Recepo da mensagem do Servidor. Converso dos campos da mensagem para os parmetros de sada;
CLIENTE SERVIDOR
Execuo
dopedido
Cliente
Bloqueado
Invocao do Procedimento
Remoto
Bloqueia-se
Retorna a
Execuo
Devoluo dos
parmetros da Resposta
CLIENTE SERVIDOR
Execuo
do
pedido
Cliente
Bloqueado
Invocao do Procedimento
Remoto
Bloqueia-se
Retorna a
Execuo
Devoluo dos
parmetros da Resposta
Detalhes da Implementao RPC/RMI:Lado Cliente
-
8/8/2019 Ad Cap5 Invocacaoremota
18/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
(1). Registo no Servio de Nomes
(2). Esperar pela criao de ligaes Estabelecimento de um canal de transporte Autenticao do cliente e/ou do servidor
(3). Esperar por pedido de execuo de procedimentos/invocao de mtodos Recepo da mensagem do pedido do cliente. Invocao da rotina/objecto de despacho; Converso dos campos da mensagem nos parmetros do
procedimento/mtodo a invocar; Chamada do procedimento/mtodo local ao servidor; Converso dos parmetros de sada e construo da mensagem de
resposta; Envio da mensagem de resposta;
(4). Fecho da ligao Eliminao do canal de transporte
Detalhes da Implementao RPC/RMI:Lado Servidor
-
8/8/2019 Ad Cap5 Invocacaoremota
19/36
-
8/8/2019 Ad Cap5 Invocacaoremota
20/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Um stub servidor o cdigo associado a cada procedimento/mtodo chamado/invocado responsvel por:
1. Desempacota o identificador do procedimento/objecto+mtodo e parmetros.2. Converte os parmetros na forma local e chama pelo procedimento/mtodo
solicitado devidamente parametrizado.3. Espera pela execuo do servio4. Converte os resultados e empacota-os na mensagem de resposta.
Rotina de despacho do
proc 1
(Dispatcher)
Rotina de despacho do
proc 2
(Dispatcher)
Rotina de despacho do
proc n
(Dispatcher)
Cdigo Servidor
proc 1(a , b)
proc 2(a , b)
proc n(a , b)
Porto
Proc 1 a,b
Stub Servidor
Fig: Mensagem agulhada para o
procedimento de servio
Como so escondidos os detalhes norelacionados com a parte aplicacional? (2)
-
8/8/2019 Ad Cap5 Invocacaoremota
21/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Ilustrao pragmtica dos RPCs que utilizam sockets
Como so escondidos os detalhes norelacionados com a parte aplicacional? (3)
Cliente...A=servfunc(p1,p2);...
Stub Cliente
res_type servfunc(P1 p1,P2 p2){S = new Socket(host,port)S.send(msg(serverfunc,p1,p2))
S.receive(msg(resultado))S.closereturn resultado}
Stub Servidor
S = new ServerSocketfor(;;) {Socket C = S.accept();C.receive(msg(op,params))
If (op == serverfunc){ resultado=serverfunc(params[0],params[1]);else if(op==) {}C.send(msg(resultado))}C.close }
Servidor
Res_type servfunc(P1 p1,P2 p2){//executa alguma operaoreturn resultado
}
Camada de Transporte Camada de Transporte
-
8/8/2019 Ad Cap5 Invocacaoremota
22/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Mquina Cliente Mquina Servidor
Processo ClienteProcesso Servidor
Implementaoadd
SO Cliente SO Servidor
1. O cliente chama oProcedimento
2. O stub clienteconstri a mensagem
6. O stub servidor fazuma chamada local ao
add5. O stub servidordesempacota amensagem
4. O SO servidordespacha a mensagempara o stub servidor
3. A mensagem enviada atravs da Rede
Ilustrao RPC (em aco)
-
8/8/2019 Ad Cap5 Invocacaoremota
23/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Implementao RMI
Mdulo de Comunicaes: Garante a troca de mensagens entre ocliente e o servidor.
Mdulo de Referncias (binder): Traduz as referncias locais emreferncias remotas
Servant (servidor): Instncia de uma classe que trata os pedidos
object A object BskeletonRequestproxy for BReply
CommunicationRemote Remote reference
Communicationmodulemodulereference module module
for Bs class& dispatcherremoteclient server
-
8/8/2019 Ad Cap5 Invocacaoremota
24/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Componentes de Software RMI
RMI software Camada de Software entre os objectosaplicacionais (C/S) e ambos os mdulos de Comunicao e deReferncias
Proxy (ou stub cliente):Torna a invocao remota transparente aoCliente. Aparentemente comporta-se como o objecto remoto. Narealidade passa as invocaes para o objecto remoto enviando umamensagem atravs da rede. Existe um proxy por cada objecto remoto.
Dispatcher: Um servidor possui um dispatchere um skeletonparacada objecto remoto. O primeiro recebe as mensagens dos mdulos decomunicao e selecciona o mtodo apropriado, usando osidentificadores dos mtodos.
Skeleton (ou stub servidor): Prepara os argumentos a passar aomtodo e invoca o mtodo. Espera pelos resultados e prepara-os eenvia a resposta ao proxy
Resumidamente, estes componentes/objectos (proxies, skeletons edispatchers) escondem os detalhes envolvidos no marshallingeunmarshalling, na passagem de mensagens e na localizao dosobjectos dos programadores
-
8/8/2019 Ad Cap5 Invocacaoremota
25/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 25
Automatizao do Processo deGerao dos
Stubs e Dispatchers
-
8/8/2019 Ad Cap5 Invocacaoremota
26/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Automatizao do processo
Nos sistemas RPC/RMI geralmente so fornecidasferramentas prximas de compiladores para geraoautomtica do cdigo dos stubs e dispatchers (e.g.,rmic) Em java RMI, estes so gerados, directamente a partir, da interface
remota Java do objecto remoto Em CORBA, esto so gerados a partir das interfaces remotas
especificadas em CORBA IDL
Compilador
IDL
RIF
Obj/procedimentoIDL
Repositriode Interfaces
Stubs c/C++/Java
-
8/8/2019 Ad Cap5 Invocacaoremota
27/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Exemplo especificao de uma interface de para leitura/escrita emficheiros remotos
PASSO 1: Gerao do identificador universal da interface bancoO utilitrio uuidgen gera um ficheiro com o uuid e estrutura inicial do
interface.[uuid(00918A0C-4D50-1C17-9BB3-92C1040B0000), /*Universal Unique ID*/version(1.0)]interface lecrescrevefs
{}
Exemplo IDL: DCE Distributed ComputingEnvironment (adoptado pelo Microsoft RPC)
O uuid permite identificar
univocamente o servidor
-
8/8/2019 Ad Cap5 Invocacaoremota
28/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
PASSO 2: Edio da descrio IDL (Sistema RPC da Microsoft, aMIDL) do interface[uuid(00918A0C-4D50-1C17-9BB3-92C1040B0000), /*Universal Unique ID*/version(1.0)]Interface leescrevefs {const long FILE_NAME_SIZE = 16;
const long BUFFER_SIZE = 1024;typedef char FileName [ FILE_NAME_SIZE ];typedef char Buffer [ BUFFER_SIZE ]void read (
[in] FileName filename;[in] long position;[in, out] long nbytes;[out] Buffer buffer; );
void write ([in] FileName filename;[in] long position;[in, out] long nbytes;[out] Buffer buffer; );
}
Podem-se definir constantes
e tipos auxiliares
Exemplo IDL: DCE Distributed ComputingEnvironment (adoptado pelo Microsoft RPC)
Os parmetros podem ser deentrada, sada ou ambos.
A indicao da direco essencialpara o compilador IDL durantea gerao dos stubs.
-
8/8/2019 Ad Cap5 Invocacaoremota
29/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Exemplo de uma interface remota em Java RMI
Exemplo IDL Java RMI
-
8/8/2019 Ad Cap5 Invocacaoremota
30/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Exemplo Interface em C# para .NET Remoting
using System;namespace IRemoting;{public interface ContaBancaria
double SaldoActual {get;}void depositar ( float quantia );void levantar (float quantia);
}}
30
Um objecto remoto deve
estender MarshalByRefObject
No .Net no preciso distinguira interface remota da local inferida durante aimplementao do servidor
-
8/8/2019 Ad Cap5 Invocacaoremota
31/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
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);};
}
Exemplo CORBA IDL
-
8/8/2019 Ad Cap5 Invocacaoremota
32/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011 32
Ligao ao Servidor RPC/RMI
-
8/8/2019 Ad Cap5 Invocacaoremota
33/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Obteno do porto do servidor RPC Em cada servidor remoto deve estar em execuo umservio chamado port mapper (RPC) Cada port mapper guarda o nmero do programa/
procedimento, verso e porto em uso por cada servidorRPC
Esta informao fornecida pelo servidor RPC quandoeste arranca
Quando um cliente arranca procura o porto do servidor,no port mapper da mquina servidor, passando-lhe estainformao
-
8/8/2019 Ad Cap5 Invocacaoremota
34/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Obteno das Referncias Remotasp/ Objectos remotos: Servio Binder (1)
Semelhante ao port mapperdos RPC
Um binder um processo separado que mantm uma tabelacontendo os mapeamentos entre nomes textuais e referncias deobjectos remotos.
usado pelos servidores para registo do seu objecto remoto pelonome.
usado pelos clientes na procura dos objectos remotos. Java RMI possui um binderchamado RMIregistry CORBA possui um servio de nomes dedicado (Naming Service)
-
8/8/2019 Ad Cap5 Invocacaoremota
35/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
1) O servidor regista o objecto no Binder(este associa-lhe uma referncia).2) O cliente obtm a referncia do objecto passando o nome deste ao Binder.3) O cliente invoca um mtodo sobre o objecto remoto.
Cliente RMI
ServidorRMI
BinderRMI
RMI
RMI1)
2)3)
Cenrio
(e.g., Java ObjectRegistry)
Obteno das Referncias Remotasp/ Objectos remotos: Servio Binder (2)
-
8/8/2019 Ad Cap5 Invocacaoremota
36/36
Alexandre Fonte Material de Apoio a AD, ESTCB Edio 2010-2011
Activadores de Objectos (Activators)
Os Processos que arrancam os processos servidores quealojam os objectos remotos so chamados deactivadores
Registam os objectos disponveis para activaoguardando os nomes dos servidores
Evita-se gastar recursos, os objectos & e os servidoresso activados medida das necessidades dos clientes
A activao consiste na criao de uma nova instancia einicializao das vriaveis de estado do objecto, a partirduma forma passiva do objecto (i.e., os mtodos e o
seu estado numa forma marshalled)