Desenvolvimento de Aplicações de Agentes Móveis Usando Aglets

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Distribuídos Baseados em Objetos
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas distribuídos
Comunicação entre processos distribuídos
Framework Aglets (para Agentes Móveis)
Sistemas Distribuídos Web Services
Sistema para Gerenciamento de Redes Baseado em Agentes Móveis
Computação Distribuída
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
Agentes Móveis Marcelo Bezerra dAmorim Sumário n Motivação n Introdução ao Paradigma de Agentes Móveis n Vantagens n Conceitos de Agentes Móveis n Tecnologias.
Invocação de Métodos Remotos RMI
Programação Concorrente
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
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.
1 Sistemas Distribuídos - SDI Caracterização de Sistemas Distribuídos. Introdução. Exemplos de Sistemas Distribuídos. Desafios.
Comunicação Inter-Processos
Área de Desenvolvimento de Sistemas
DAS Sistemas Distribuídos para Automação Industrial
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Elementos da Arquitetura P2P
Mobilidade Cláudia Ribeiro.
Sistemas Distribuídos
Funcionalidades e Protocolos da Camada de Aplicação
Tecnologia de Informática
Concorrência em Java Threads em Java.
Elementos Básicos Modelo de Eventos Modelo de Comunicação
Desenvolvendo Sistemas Multiagentes com JADE
1 Modelos de Sistemas Distribuídos. Introdução - Dificuldades e ameaças para SD. Grande variação na utilização de SD )carga de trabalho e requerimentos.
Sistemas Distribuídos
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
Métodos de Construção de Software: Orientação a Objetos
Chamada Remota de Procedimentos
Marcela Bezerra da Silva Cin - UFPE
Sistemas Distribuídos
JUnit “Keep the bar green to keep the code clean” JUnit Site.
Concorrência e Java RMI
Conceitos de J2EE para a WEB
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Gerenciamento de Redes Utilizando Agentes Móveis
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 05.
Sistemas Distribuídos
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Java RMI João Gabriel (jggxm).
Processos.
IIS Web Server.
Agentes Inteligentes e Sistemas Multi-agente (UE11) Agentes Móveis
Elementos de um Sistema de Agentes Móveis Agentes e Places Comportamento de Agentes Comunicação Padronização OMG/MASIF.
ASDK API Aglet API Aglet Event. API Aglet É um pacote Java ( com.ibm.aglet ) que contém classes e interfaces necessárias à programação da interface entre.
Java Kickstart, day 2 Semelhanças com linguagem C.
Games House Lamberto Augusto (laon) Millena de Andrade (maag) Sylvia Campos (scls) Pedro Lages (plm)
Padrões de Interação com o Usuário
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aglets.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
Redes de computadores: Aplicações Prof. Dr. Amine BERQIA
Implementação Distribuída Escalonamento de Tempo-Real Prof. Dr. Norian Marranghello Grupo 8 Daniela Gonçalves Strozi – Sayuri Watanabe
Sistemas Distribuídos
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
Leandro Clementino Almeida.  Anos 50 - Sistemas Operacionais tipo Lote:  Aumentar a capacidade de processamento de programas  Usuário ia ao computador.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

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 Agente estacionário Agente móvel 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

Exemplo do Mundo Real

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

Exemplo public class DispatchingExample extends Aglet { boolean _theRemote = false; public void onCreation(Object o) { addMobilityListener( new MobilityAdapter() { public void onDispatching(MobilityEvent e) { // Print to the console... } public void onArrival(MobilityEvent e) { _theRemote = true; //-- Yes, I am the remote aglet. );

Exemplo (continuação) public void run() { if (!_theRemote) { // The original aglet runs here try { dispatch(destination); // You should never get here! } catch (Exception e) { System.out.println(e.getMessage()); } } else { // The remote aglet runs here...

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

Obtendo um Proxy Um proxy é obtido ao criar um aglet. O método AgletContext.createAglet retornará o proxy do aglet recém-criado. Outros métodos que retornam proxies incluem: AgletContext.retractAglet, AgletContext.activateAglet, AgletProxy.clone e AgletProxy.dispatch Proxies de aglets existentes podem ser obtidos das seguintes formas: AgletContext.getAgletProxies AgletContext.getAgletProxy

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)

Recebendo Mensagens O objeto message é passado como argumento para o método handleMessage do aglet. public boolean handleMessage(Message msg) { if (msg.sameKind("my name")) { String name = (String)msg.getArg(); // Gets the name... return true; // Yes, I handled this message. } else if (msg.sameKind("your name?")) { msg.sendReply("Yina"); // Returns its name... } else return false; // No, I did not handle this message. }

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 Mestre-Escravo: Participantes

Padrão Mestre-Escravo: Colaboração

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 Reunião: Participantes

Padrão Reunião: Colaboração

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

Padrão Itinerário: Participantes

Padrão Itinerário: Colaboração

Aplicações Busca de Arquivos Comércio Eletrônico Busca Distribuída Sistema de Detecção de Intrusão

Busca de Arquivos

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

Arquitetura do Aglet Marketplace

Busca Distribuída Duas classe de agentes: Publishers e Searchers 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

Sistema de Detecção de Intrusão

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