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.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Distribuídos Baseados em Objetos
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Java Remote Method Invocation Java RMI
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Paulo Marques Hernâni Pedroso
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Laurent Baduel Françoise Baude Denis Caromel 1 Efficient, Flexible, and Typed Group Comunications in Java Por: Adriano Andrade53811 Susana Rijo José
Modelos de Comunicação em Sistemas Distribuídos
Orientação a Objetos: Encapsulamento e Classificação
Comunicação Distribuída
Interação Cliente Servidor
Objetos Distribuídos e Invocação Remota
Sistemas Distribuídos CORBA
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
Comunicação Inter-Processos
DAS Sistemas Distribuídos para Automação Industrial
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Middleware e Sistemas Distribuídos
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Arquiteturas de Referência
Arquitetura CORBA e Objetos Distribuídos
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tópicos de Sistemas de Informação A
Chamada Remota de Procedimentos
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Marcela Bezerra da Silva Cin - UFPE
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
Sistemas Distribuídos
Mole: Um Sistema de Agentes Móveis Baseado em Java Curso de Ciência da Computação Departamento de Informática Disciplina de Tópicos Especiais em Computação.
Professor: Márcio Amador
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
TMV Gestão de Redes e de Sistemas Distribuídos ???? Sumário  Arquitectura de Gestão SNMP  Arquitectura de Gestão OSI/TMN  Novas Arquitecturas.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
CORBA Apresentação do Padrão CORBA Maurício Maron Mendes Ramiro Pereira de Magalhães
Tecgraf PUC-Rio Setembro de 2013 Introdução ao Openbus.
Java RMI João Gabriel (jggxm).
RMI - JAVA.
Elementos de um Sistema de Agentes Móveis Agentes e Places Comportamento de Agentes Comunicação Padronização OMG/MASIF.
Comunicação.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Sistemas Distribuídos Prof. Marcus Rodrigues
Java – Remote Method Invocation (RMI)
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Modelos de Comunicação em Sistemas Distribuídos
Modelos de Comunicação em Sistemas Distribuídos
FORMI Integrating Adaptive Fragments Objects into Java RMI Kapitza, Rüdiger; Domaschka, Jörg; Hauck, Franz J.; Reiser, Hans P. ;Schmidt, Holger. IEEE Distributed.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
RMI Remote Method Invocation
Sistemas Distribuídos
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Passagens de Mensagens Prof. Dr. Norian Marranghello
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Introdução ao OpenBus.
Sistemas Distribuídos Prof. Marcus Rodrigues
Protocolos de Comunicação e Passagem de Mensagens
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Transcrição da apresentação:

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

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

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

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

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

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)

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

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

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

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

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

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)

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

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...

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

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)

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:

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++

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

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

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

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

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)

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

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

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

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

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

Fluxos Unidades de dados Objeto Produtor Objeto Consumidor

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

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)

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

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

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!

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

Próxima Parte... Middleware Orientado a Mensagens