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

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

Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2.

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2."— Transcrição da apresentação:

1 Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2

2 Chamadas de Objetos: Chamadas Remotas e Chamadas Locais invocation remote invocation remote local invocation A B C D E F

3 Um Objeto Remoto e sua Interface Remota interface remote m1 m2 m3 m4 m5 m6 Data implementation remoteobject { of methods

4 Objetos Distribuídos Organização típica de um sistema de objetos distribuídos baseado em proxy e skeleton. Operação de binding: cliente obtém um proxy para o objeto remoto. 2-16

5 Conceitos de Implementação Objeto de linguagem Objeto remoto Adaptador de objeto Servidor Máquina Processo servidor Objetos remotos Objetos de linguagem: instâncias de classes que implementam os objetos remotos Máquina Cli ent e Adaptador de Objeto

6 Binding de um Cliente com um Objeto a)Exemplo de binding implícito – utiliza apenas referências globais. b)Exemplo de binding explícito – utiliza referências globais e locais. 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)

7 Referências de Objetos Permitem a um cliente referenciar e interagir com objetos remotos de maneira transparente Exemplo de implementação: Podem ser tratados como ponteiros ou referências locais na implementação do cliente –na verdade, um ponteiro ou referência local para o proxy! Internet addressport numbertimeobject number interface of remote object 32 bits

8 Protocolo entre Cliente e Servidor Request ServerClient doOperation (wait) (continuation) Reply message getRequest execute method message select object sendReply

9 Formato Geral das Mensagens O mesmo formato geral é utilizado tanto para requisições quanto para respostas. messageType requestId objectReference methodId arguments int (0=Request, 1= Reply) int RemoteObjectRef int or Method array of bytes

10 Passagem de Parâmetros em RMI Diferença entre passagem por referência e passagem por valor. Há várias formas de se determinar o tipo de passagem a ser usado (e.g., em Java, objetos do tipo Remote são sempre passados por ref.) 2-18

11 Um Modelo para Implementação de RMI (Compare com o modelo de implementação de RPC.) object A object B Request proxy for B Reply Communication Remote Remote reference Communication module reference module module remote client server skeleton for Bs class dispatcher

12 RMI Estática vs. RMI Dinâmica Chamada estática de métodos remotos –a interface do objeto remoto é compilada para gerar um proxy específico –o cliente é programado para utilizar o proxy –Ex.: result = object1.method1(param1, param2); Chamada dinâmica de métodos remotos –a chamada é construída em tempo de execução –o cliente pode ser genérico independente de quais interfaces utilizará pode descobrir as interfaces em tempo de execução –o proxy (stub cliente) é genérico –Ex.: invoke(object, method, input_params, output_params)

13 Semântica de Chamadas Remotas At-most-once –a chamada é executada (no servidor) 0 ou 1 vez At-least-once –a chamada é executada pelo menos uma vez mas pode ser executada várias vezes Best-effort –a chamada pode ou não ser executada i.e., 0 ou mais vezes Exactly once –a chamada é sempre executada uma e somente uma vez

14 Modelos de Objetos Distribuídos Atualmente, cada sistema de middleware adota um modelo de objetos distribuídos particular. Mas alguns conceitos são comuns. No futuro, sistemas de middleware tenderão a ser independentes de modelo. Mas, por enquanto, precisamos de algum modelo de objetos canônico, definido em conjunto com o middleware representativo de qualquer modelo de objetos distribuído conhecido veja a seguir...

15 Conceitos Utilizados na Definição de um Modelo de Objetos Distribuídos Interfaces Tipos Classes Templates Modelos de Interação Definições no Modelo de Referência para Processamento Distribuído Aberto da ISO ISO RM-ODP

16 Características de Objetos Interfaces –Objetos podem interagir apenas através de interfaces bem definidas Referência de Interface –Uma ou mais referências para identificação do objeto, através de sua(s) interface(s) Ciclo de vida –Objetos são criados e posteriormente destruídos (explícita ou implicitamente)

17 Interfaces de um Objeto Um objeto pode ter várias interfaces Permitem abstrair a implementação interna do objeto Múltiplas visões ou formas de acesso ao mesmo objeto –Para uso por clientes diferentes Objeto Interface Funcional Interface de Gerenciamento Exemplo:

18 Especificação de Objetos Template Descrição completa das características de um objeto –Interfaces e implementação Contém tudo o que é necessário para criar um objeto de um certo tipo –Um modelo ou fôrma para criação de objetos Ex.: classes em Java e C++

19 Tipos e Classes em RM-ODP Tipo Predicado definindo as propriedades de um ou mais objetos Dois objetos são do mesmo tipo sse o predicado é verdadeiro para ambos Geralmente, pode ser expresso em termos das interfaces que um objeto oferece Define o serviço oferecido por um objeto Classe Conjunto de objetos do mesmo tipo

20 Tipos e Classes em RM-ODP Predicado ÉVermelho: O {V,F} Tipo Vermelho obj é do tipo Vermelho ÉVermelho(obj) = V Classe Vermelho {obj | ÉVermelho(obj)=V} Conjunto de objetos O Classe Vermelho Templates instanciação

21 Sub-tipos e Sub-classes C 1, C 2 C 1 é subclasse de C 2 C 1 C 2 T 1, T 2 T 1 é um sub-tipo de T 2 P(T 1 ) => P(T 2 ) onde P(T) denota o predicado que define o tipo T

22 Sub-tipos e Sub-classes Sub-classes e sub-tipos são conceitos relacionados Podem ser usados para formar hierarquias Predicados ÉVermelho ÉQuadradoVermelho T2T2 T1T1 C2C2 C1C1 define sub-tipo de Tipos Classes

23 Herança em Sistemas Distribuídos Herança de Implementação Template definido em termos de um ou mais templates base –O código do objeto pode não estar todo localizado no mesmo lugar –Pode precisar ser fazer acesso remoto ao código (download) antes de executar algum método –Problemas de desempenho que podem tornar este tipo de mecanismo impróprio para uso em sistemas distribuídos Herança de Interface A interface de um objeto pode ser definida como extensão de uma ou mais interfaces base –Apenas a definição do tipo é envolvida – a implementação continua local –Permite implementar sub-tipagem –Permite explorar polimorfismo –Seu uso é bastante vantajoso em sistemas distribuídos –Pois permite o uso de serviços equivalentes (embora não idênticos)

24 Modelos de Interação entre Objetos Três tipos de interação Operações Fluxos Sinais

25 Operações Padrão de interação do tipo cliente / servidor –Cliente requisita a um objeto servidor a realização de alguma operação –Servidor processa a requisição –Servidor pode retornar um resultado (resposta) Objetos envolvidos podem assumir dois papéis distintos: cliente ou servidor

26 Operações: Interrogações Operações com resposta Requisição Resposta Objeto Cliente Objeto Servidor

27 Operações: Anúncios Operações sem resposta Requisição Objeto Cliente Objeto Servidor

28 Fluxos Padrão para interações em que: –Há um fluxo contínuo de unidades de dados entre dois ou mais objetos –Com relacionamento temporal entre as unidades de dados transmitidas –Modelo mais adequado à transferência de dados baseados em mídias contínuas (i.e., com dependência temporal) Ex.: áudio e vídeo Objetos podem assumir dois papéis: produtor e/ou consumidor

29 Fluxos Unidades de dados Objeto Produtor Objeto Consumidor

30 Sinais Objeto Emissor Objeto Receptor Emissão de Sinal Recepção de Sinal Uma forma de interação mais primitiva –Permite que um objeto sinalize a outro objeto a ocorrência de um evento –Outras formas de interação podem ser construídas como uma série de sinais coordenados

31 Uma Consideração Final sobre o Conceito Fundamental de Objeto Distribuído Implementação Distribuída dos objetos Estado distribuído Código distribuído Implementação Centralizada e Interfaces Remotas Estado e código localizados no mesmo processo Interfaces localizadas junto aos clientes Processo 1 Processo 2 Máquina A Máquina B Estado do Objeto Código dos Métodos Máquina A Máquina B Objeto Proxy Cliente Interface Remota Modelo mais utilizado em sistemas de middleware de uso prático Modelo utilizado em sistemas de middleware experimentais. Especialmente aqueles que empregam algum modelo de composição de componentes (em lugar de objetos convencionais)

32 Java RMI Modelo de objetos distribuído integrado como parte linguagem Java Dependente de linguagem Independente de SO, hardware, rede Duas categorias de objetos: locais e remotos –Muito parecidos, mas com algumas diferenças fundamentais decorrentes da distribuição

33 Diferenças entre Objetos Locais e Objetos Remotos Clonagem de objetos Pode-se criar uma cópia idêntica de um objeto, mas esta não será imediatamente acessível aos clientes do objeto original i.e., a referência de objeto (ou o proxy) não é clonado – é necessário um novo binding Semântica de bloqueio na chamada de métodos declarados como synchronized o bloqueio deveria ocorrer no proxy, antes da chamada – muito complexo, não implementado bloqueio no servidor é problemático, pois um cliente que ganha acesso ao método e, em seguida, falha nunca liberará o acesso para outros objetos

34 Características de Java RMI Passagem de parâmetros Qualquer objeto, primitivo ou não, pode ser passado como parâmetro –a classe do objeto precisa ser declarada como serializable –exceções: descritores de arquivos e sockets Objetos locais são passados por valor Objetos remotos são passados por referência –a referência de objeto (proxy) é passada por valor!

35 Modelo em Camadas de Java RMI O proxy contém todo o conhecimento específico necessário para fazer chamadas a um objeto remoto Em Java, basta serializá-lo e enviá-lo no lugar da própria referência de objeto!!! Programa Cliente Camada de Referências Remotas Proxy Camada de Transporte Programa Servidor Camada de Referências Remotas Skeleton Camada de Transporte A Internet Caminho lógico de comunicação

36 Próxima Parte... Middleware Orientado a Mensagens


Carregar ppt "Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática – UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2."

Apresentações semelhantes


Anúncios Google