Ad Cap5 Invocacaoremota

Embed Size (px)

Citation preview

  • 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)