Conceito Básicos de Programação com Objetos Distribuídos Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1
Autoria Autor C. Geyer Local Instituto de Informática UFRGS disciplina : Programação com Objetos Distribuídos Versão V1d.1, março 2014 Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 2
Súmul a Súmula questões e abordagens distribuição concorrência sincronização comunicação outras Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 3
Questões básicas Questões básicas distribuição: quais sãos os elementos de distribuição? Como um programa é estruturado na rede? criação: quem, onde e quando? nomeação: como identificar e encontrar os elementos distribuídos? concorrência: quais são os elementos de concorrência, principalmente local? Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 4
Questões básicas Questões básicas comunicação como os objetos distribuídos trocam informações? sincronização como as ações (threads) concorrentes se sincronizam? Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 5
Distribuição Distribuição elemento de distribuição objeto: mais comum nos ambientes de POD atuais processo exemplo: ORCA (Bal): processos compartilham objetos passivos Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 6
Distribuição Criação (instanciação) Pelo servidor Cliente remoto acessa o objeto após criação Pelo cliente Cliente solicita a criação remota Compartilhamento A cada chamada Por um único cliente Por vários (ou todos) os clientes Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 7
Distribuição Ciclo de vida Controlado pelo servidor Controlado pelo criador (remoto) Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 8
Distribuição Nomeação Objetos com nomes (strings) Nome dado pelo programa (programador) criador Programas clientes conhecem o nome Servidor de nomes Mantém registros de nomes com referências a objetos Inclusão de nome + referência Retorna referência dado um nome Classe (componente) com nome Cliente solicita um objeto informando o nome da classe Objeto pode ser novo ou já existente Cliente recebe referência ao objeto Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 9
Distribuição Nomeação Referência remota Instanciação remota de objeto retorna referência remota Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 10
Concorrência Concorrência objetos passivos processos oferecem concorrência programação OO: normal (quase) exemplo: ORCA (Bal) processos ativos objetos passivos compartilhados por processos usualmente os objetos compartilhados por processos são explicitamente indentificados Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 11
Concorrência Concorrência (cont.) programas independentes modelo cliente/servidor clientes são concorrentes clientes compartilham servidores (objetos) programação de clientes e servidores é OO normal (quase) servidores podem necessitar de sincronização explícita exemplo: Java com RMI Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 12
Concorrência (cont.) Concorrência objetos concorrentes cada objeto pode ter um (ao menos) fluxo de execução próprio objetos ativos existem objetos ativos e passivos ativos passivos com fluxos próprios sem fluxo próprio (normal) concorrência interobjetos exemplos: Java threads, C# threads Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 13
Concorrência Concorrência (cont.) objetos com concorrência interna extensão da forma acima diversos fluxos são declarados em um objeto extra-métodos exemplo: SR: um resource com processos internos Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 14
Concorrência Concorrência (cont.) chamadas concorrentes atendimento concorrente das chamadas concorrentes a um objeto servidor ou compartilhado chamadas feitas por vários clientes concorrentes pode ser combinada com programas independentes e objetos concorrentes Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 15
Concorrência Concorrência (cont.) chamadas concorrentes exige mecanismos de sincronização, normalmente de memória compartilhada semáforos, monitores,... concorrência intraobjetos exemplo: Java, CC++ Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 16
Concorrência Concorrência (cont.) concorrência intramétodo execução de um método pode ativar diversos fluxos normalmente os fluxos estão contidos no objeto modelo estruturado: parbegin/parend exemplo: CC++ Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 17
Sincronização Sincronização usualmente resolve os casos de exclusão mútua e sinalização intra-objetos monitores: exemplos: Java e C#, ambos na 1a versão semáforos variável contadora primitivas P(s) e V(s) barreiras locks Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 18
Sincronização Sincronização intra-objetos Java a partir da versão 1.5 contempla vários desses mecanismos API: sofisticada desempenhos distintos vários testes de desempenho (Web, II, ) Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 19
Sincronização Sincronização intra-objetos guardas condições de aceitação de uma chamada em caso negativo, chamada fica bloqueada até que condição seja verdadeira seções (blocos) de exclusão mútua exemplo: synchronized Java variáveis de condição (write-once) exemplo: CC++ Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 20
Sincronização Sincronização transações gerenciadas pelo programador gerenciadas pelo ambiente outros recursos além de exclusão mútua e sinalização tudo ou nada: estado pode retornar ao início da transação em caso de falha exemplo: J2EE/EJB Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 21
Comunicação Comunicação por troca de mensagem básica ponto a ponto normalmente assíncrona flexível: qualquer aplicação/problema mais eficiente mais complexa (difícil) diferente da comunicação usual em OO exemplo: Java sockets Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 22
Comunicação Comunicação por chamada de método mais simples similar à usual chamada de método em OO menos eficiente menos flexível exemplos Java RMI chamada remota em CORBA chamada remota em J2EE C# Remoting Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 23
Comunicação (mais) sofisticadas JavaSpaces JMS Espaço de objetos compartilhados Estado e comportamento J2EE Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 24
Comunicação Comunicação por protocolos Web exemplos http SOAP Java/servlet SOAP independente de linguagem, plataforma e protocolo de base (implementação) formato mensagem: XML Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 25
Sincronização Sincronização em comunicação Inter-programas Assincronismos clássicos do modelo send/receive exemplo: Java sockets inter-objetos (chamada remota de objeto) chamadas síncronas exemplo: Java RMI (RPC) chamadas assíncronas sem resposta chamadas com resposta no futuro Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 26
Outras questões importantes Questões Importantes persistência: mapeamento sobre SGBDs, APIs próprias,... replicação: para que? quando? protocolos de consistência? mapeamento em qual computador (cpu) um novo objeto será alocado? idem em caso de migração de um objeto? migração: mobilidade, agentes móveis segurança: principalmente em redes não locais desempenho gerência da concorrência gerência de objetos (servidores,...) comunicação Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 27
Questões Importantes Outras questões importantes interoperabilidade entre plataformas (hw e SO), linguagens,... heterogeneidade: acomodação herança: problema com sincronização escalonamento: aplicações de alto desempenho threads (tarefas) em servidores Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 28
Questões Importantes Outras questões importantes protocolos de comunicação independentes de hw SO linguagens adaptadas para computação móvel, ubíqua, embarcada,... dispositivos com restrições de memória, cpu, bateria,... Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 29
Resumo Sincronização Modelo de distribuição Objeto em geral Opções de criação Muitas opções Tipos de nomeação Nome e referência Sincronização local Opções clássicas (monitor, lock, semáforo, ) Comunicação Send/receive Chamada de método remoto Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 30
Exercícios Exercício a) quais das questões acima (até 3) voce acha mais importante? Justifique b) voce acha que um bom ambiente de POD ainda precisa resolver outras questões, por exemplo, devido ao surgimento de novos modelos de computação e aplicações? Quais? Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 31
Revisão Quais as questões clássicas (básicas)? Quais (ao menos 4) questões importantes? Modelo atual de concorrência? Modelo de sincronização apropriado para objetos? Modelo de comunicação apropriado para objetos? Revisão Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 32