340 likes | 463 Views
Desenvolvimento de Aplicações de Agentes Móveis Usando Aglets. Por Adriano L. I. Oliveira alio@cin.ufpe.br. Roteiro. Introdução Por Que Usar Agentes Móveis? O Modelo Aglet A API Aglet Construção de Sistemas de Agentes Móveis Aplicações Referências. Conceitos. Agente de software
E N D
Desenvolvimento de Aplicações de Agentes Móveis Usando Aglets Por Adriano L. I. Oliveira alio@cin.ufpe.br
Roteiro • Introdução • Por Que Usar Agentes Móveis? • O Modelo Aglet • A API Aglet • Construção de Sistemas de Agentes Móveis • Aplicações • Referências
Conceitos • Agente de software • Agentes cujo ambiente é o computador ou rede de computadores • Agente estacionário • Executa apenas no sistema onde iniciou a execução • Para interagir com outros agentes usa mecanismos de comunicação como RPC • Agente móvel • Pode se transportar, através da rede, de um sistema para outro
Por Que Usar Agentes Móveis? • Eles reduzem a carga da rede App Serviço Abordagem baseada em RPC Host A Host B App Serviço Abordagem baseada em agentes móveis
Por Que Usar Agentes Móveis? • Eles superam o problema da latência da rede • Sistemas de tempo-real não toleram atrasos na resposta a mudanças em seu ambiente • Agentes podem ser despachados de um controlador central para atuar localmente • Eles encapsulam protocolos • Eliminam o problema da atualização de protocolos
Por Que Usar Agentes Móveis? • Eles executam de forma assíncrona e autônoma App Serviço Envia o agente App X Serviço Desconecta App Serviço Reconecta e retorna
Por Que Usar Agentes Móveis? • Eles se adaptam dinamicamente • Novas versões de agentes podem ser enviadas para substituir versões antigas • Agentes podem perceber seu ambiente e reagir a mudanças autonomamente • Eles são naturalmente heterogêneos • Eles são robustos e tolerantes a falhas • Quando um host está prestes a ser desligado, os agentes podem se mover para outros hosts • A possibilidade de operação desconectada e a arquitetura distribuída e redundante eliminam pontos de falha centrais
Aglets: O Que É? • Ambiente de trabalho para a construção de sistemas de agentes móveis desenvolvido pela IBM do Japão • Consiste em um kit de desenvolvimento de aglets e uma plataforma para sua execução • A API é um pacote de classes para Java
Aglets versus Applets • Aglet estende o modelo de código móvel dos applets • Applet: • Código pode se mover do servidor para o cliente • Ambiente de execução: browser Web • Agglet: • Programa Java em execução (código + estado) que pode se mover de um host para outro • Pode viajar seqüencialmente entre vários hosts, podende, inclusive, voltar ao host original • Ambiente de execução: contexto (ex: Tahiti)
Aglet: Abstrações Básicas • Aglet • Proxy • Context • Message • Future reply • Identifier
Aglet: Modelo do Ciclo de Vida Contexto A Contexto B Clone Dispatch Aglet Aglet Dispose Retract Create Deactivate Activate Arquivo de Classes Disco
A Classe Aglet • Classe abstrata usada como base para o desenvolvimento de aglets customizados • Define métodos para controlar seu próprio ciclo de vida • Define métodos que são chamados pelo ambiente do aglet antes da execução de cada operação do ciclo de vida • Exemplos: onDispatch(), onCloning(), onDisposing()
Transferência de um Aglet Host A Host B Campos de dados + Código da classe Passo 1 Hospedando Fluxo através da rede Passo 2 Enviando Recebendo Passo 3 Hospedando
A Interface AgletProxy • O proxy age como um objeto escudo que protege o aglet de aglets maliciosos • Um aglet interage com outro aglet através de um proxy • Quando invocado, o objeto AgletProxy consulta o gerente de segurança para determinar se o contexto de execução atual pode executar o método • Outro papel importante de AgletProxy é prover transparência de localização para o aglet
A Interface AgletContext • O contexto é um ambiente de execução uniforme para os aglets • AgletContext é usada pelos aglets para: • Obter informações sobre o ambiente • Enviar mensagens para o ambiente, inclusive para outros aglets ativos neste • Tahiti: • Interface gráfica da IBM para o contexto • O usuário pode realizar as diversas operações do ciclo de vida de um aglet
A Classe Message • Aglets se comunicam através da troca de objetos da classe Message. • Criando o objeto message: • Message myName = new Message("my name", "Jacob"); • Message yourName = new Message("your name?"); • Mensagens são enviadas através de métodos de AgletProxy: • Object sendMessage(Message msg) • FutureReply sendFutureMessage(Message msg) • void sendOnewayMessage(Message msg)
Construção de Sistemas de Agentes Móveis: Design Patterns • Design Patterns fazem parte do kit de desenvolvimento Aglets • Objetivo: identificar e formalizar bons elementos de projeto que sejam reutilizáveis para aplicações de agentes móveis • Os padrões disponíveis podem ser divididos em três classes: • Viagem (ex: padrão itinerário) • Tarefa (ex: padrão mestre-escravo) • Interação (ex: padrão reunião)
Padrão Mestre-Escravo • O agente mestre pode delegar uma tarefa a um agente escravo • Aplicações: • Quando um agente precisa realizar uma tarefa em paralelo com outras tarefas • Quando um agente estacionário precisa realizar uma tarefa em um destino remoto
Padrão Reunião • Provê uma forma dos agentes estabelecerem interações locais em hosts específicos • Aplica-se nos seguintes casos: • Quando agentes precisam interagir e o custo de sua locomoção para um local central é menor que o custo associado à comunicação remota • Quando agentes não podem interagir remotamente • Quando agentes precisam acessar serviços locais em determinado host
Padrão Itinerário • Encapsula os itinerários dos agentes e suas navegações entre múltiplos destinos • Deve ser usado quando se deseja: • Ocultar os detalhes do itinerário do agente para promover modularidade em ambas as partes • Prover uma interface uniforme para uma navegação seqüencial de agentes para múltiplos hosts • Definir itinerários que possam ser compartilhados entre agentes
Aplicações • Busca de Arquivos • Comércio Eletrônico • Busca Distribuída • Sistema de Detecção de Intrusão
Aglet Meeting Place Middleware • Framework desenvolvido pela IBM que executa sobre Aglets. • Trata-se de um sistema multi-agente em que agentes de venda e de compra interagem uns com os outros. • A arquitetura define o papel dos proprietários do mercado, dos vendedores e dos consumidores. • Uma importante construção do AMPM é uma base de dados de tipos de mensagens. • Aplicado em http://www.tabican.ne.jp
Busca Distribuída • Duas classe de agentes: Publishers e Searchers • Publisher: • Emite mensagens a respeito de novos documentos publicados • Searcher: • Define, no momento da sua criação, os documentos que lhe interessam • Registra interesse em receber mensagens de publisher • Ao receber mensagem de publisher, verifica se o documento é interessante e informa ao usuário
Referências • http://www.aglets.org • http://www.trl.ibm.co.jp/aglets • http://www.aglets.org/resources/articles/index.jsp • http://www.javaworld.com/javaworld/jw-04-1997/jw-04-agents.html • http://www.javaworld.com/javaworld/jw-04-1997/jw-04-hood.html • http://www.javaworld.com/javaworld/jw-05-1997/jw-05-hood.html