910 likes | 1.19k Views
O Modelo Aglet. Elementos Básicos Modelo de Eventos Modelo de Comunicação. Introdução. O Modelo de Objeto Aglet Projetado para se beneficiar das características de agentes em Java, enquanto sobrepujando algumas das deficiências no sistema de linguagem.
E N D
O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação
Introdução • O Modelo de Objeto Aglet • Projetado para se beneficiar das características de agentes em Java, enquanto sobrepujando algumas das deficiências no sistema de linguagem. • Um agente móvel é um objeto móvel que tem sua própria thread de controle, é dirigido a evento e se comunica por passagem de mensagem.
Elementos Básicos • O modelo aglet define um conjunto de abstrações e o comportamento necessário para influenciar a tecnologia de agentes móveis em redes de longa distância, como a Internet, ou em redes locais que sigam a mesma tecnologia.
Aglet Proxy Contexto Identificador Abstrações Chaves
Aglet • Um aglet é um objeto Java móvel que visita hosts habilitados à aglets, em uma rede de computadores
Proxy • Um proxy é um objeto representante de um aglet, que serve como protetor do aglet, quanto ao acesso direto a seus métodos públicos. • Provê transparência de localização para o aglet, isto é, oculta o aglet de sua localização real. Isto significa que um aglet e seu proxy podem estar separados, de modo que um proxy local oculta o afastamento do aglet.
Contexto • Um contexto é um lugar de trabalho do aglet. • Corresponde aproximadamente ao conceito de “place”. • O ambiente no qual os aglets operam. • O sistema operacional para o aglet. • Lugar no qual um aglet pode executar.
Contexto • É um objeto estacionário que provê o meio para manter e gerenciar aglets rodando em um ambiente de execução uniforme, onde o host é seguro contra aglets maliciosos.
Contexto • É um nodo em uma rede que pode rodar múltiplas “engines” e cada “engine” pode ter múltiplos contextos.
Relação entre Host, “Engine” e Contexto Host Contexto A Contexto C Contexto B “Engine” Processo Servidor Rede
Contextos • Contextos são nomeados e assim podem ser localizados pela combinação do endereço da sua “engine” ( processo servidor) e de seu nome.
Identificador • Um identificador é ligado a cada aglet. • É globalmente único e imutável durante o tempo de vida do aglet.
Comportamento suportado pelo Modelo Aglet • Conjunto mínimo de operações para criar e gerenciar um ambiente de agentes móveis distribuído: • Existem dois modos para a proporcionar vida a um aglet: (a) instanciada a partir de sua criação (creation); (b) copiado de um aglet existente (cloning).
Comportamento suportado pelo Modelo Aglet • Para controlar a população de aglets, pode-se destruí-los (disposal). • Aglets são móveis em dois diferentes modos: ativamente e passivamente.
Abordagem Ativa da Mobilidade • É caracterizada por um aglet migrando ele próprio a partir de seu host corrente para um host remoto. • ( “dispatching” = despachando, expedindo)
Abordagem Passiva da Mobilidade • Um host remoto puxa um aglet, longe de seu host corrente. • ( “retracting” = retirar, recolher )
Recursos • Quando aglets estão rodando, eles ocupam recursos. • Para reduzir o consumo de recurso, aglets podem dormir temporariamente, liberando o recurso ( “deactivation” ), e mais tarde pode ser trazido de volta ao modo rodando ( “activation”).
Troca de Informação • Múltiplos aglets podem trocar informação para realizar uma determinada tarefa. • ( “messaging” )
Aglet API • Fácil para aprender a usar e suficientemente abrangente e robusta para aplicações reais. • A lista seguinte resume as operações fundamentais de um aglet: “creation”, “cloning”, “dispatching”, “retraction”, “activation”, “deactivation” “disposal”.
Operações Fundamentais • “Creation” ( NOVO AGLET CRIADO ) • Toma lugar em um contexto. • É atribuído um identificador ao novo aglet. • É inserido dentro do contexto e inicializado. • O aglet inicia a execução logo que ele tem inicializado bem sucedidamente.
Operações Fundamentais • “Cloning” • Produz uma cópia quase idêntica do aglet original, no mesmo contexto. • A única diferença é o identificador atribuído e o fato que a execução reinicia no novo aglet. • Threads de execução não são clonadas.
Operações Fundamentais • “Dispatching” • Expedindo um aglet de um contexto a outro, ele será removido do contexto corrente e inserido no contexto destino, onde ele reiniciará a execução (thread de execução não migra). • O aglet é “puched” a seu novo contexto.
Operações Fundamentais • “Retraction” • A retração de um aglet “pull” (puxa) ele a partir do seu contexto corrente e o insere dentro do contexto, no qual a retração foi solicitada.
Operações Fundamentais • “Activation” and “Deactivation” • A desativação de um aglet corresponde a, temporariamente, a parar sua execução e armazenar seu estado em memória secundária. • A ativação de um aglet restaurará ele no mesmo contexto.
Operações Fundamentais • “Disposal” • O “disposal de um aglet parará sus execução e removerá ele de seu contexto corrente.
O Ciclo de Vida de um Aglet Context A Context B Dispose Dispatch Clone Aglet Aglet Retract Create Deactivate Activate Class File Disk Storage
O Modelo de Eventos para Aglets • O modelo de programação aglet é baseado em evento. • O modelo permite ao programador “plug in” listerners customizados (especializados) dentro de um aglet. • Listeners detém eventos particulares no ciclo de vida de um aglet e permite ao programador tomar uma ação, por exemplo, quando um aglet está sendo despachado.
O Modelo de Eventos • Existem três tipos de listeners : • Clone Listener • Mobility Listener • Persistence Listener
O Modelo de Eventos • Clone Listener • Ouve eventos de clonagem. • Customizar este listener para tomar ações específicas quando: • (a) um aglet é para ser clonado, • (b) quando o clone é realmente criado, ou • (c) após a clonagem ter tomado lugar.
O Modelo de Eventos • Mobility Listener • Ouve eventos de mobilidade. • Usa-se este listener para tomar ação quando: • (a) um aglet é despachado para outro contexto; • (b) um aglet é “retracted” de um outro contexto; • (c) o aglet, realmente, chega em um novo contexto.
O Modelo de Eventos • Persistence Listener • Ouve para eventos persistentes. • Permite ao programador tomar ação quando: • (a) um aglet é para ser desativado, ou • (b) após ele ter sido ativado.
Relacionamento entre um Aglet e seus Listeners Aglet CloneListener Clone Events MobilityListener Mobility Events Persistence Events PersistenceListener
O Modelo de Comunicação Aglet • Aglets se comunicam por passagem de messagem. • A facilidade de passar mensagem permite aglets a criar e trocar mensagens em modos flexíveis. • Por default, um aglet não manipula mensagens concorrentemente.
O Modelo de Comunicação Aglet • Isto significa que todas as mensagens são manipuladas uma-a-uma. • São componentes do modelo de comunicação: - Aglet , AgletProxy - Message - Future Reply - Reply Set
O Modelo de Comunicação do Aglet Aglet/Aplication Message Message Proxy Aglet Reply Reply
O Modelo de Comunicação Aglet • Message. • Uma mensagem é um objeto trocado entre aglets. • É permitido a passagem de mensagem assícrona, bem como, a passagem de mensagem síncrona entre aglets. • Passagem de mensagem pode ser usado por aglets para colaborar e trocar informação em um modo acoplado fracamente.
O Modelo de Comunicação Aglet • Future replay • É usado em envio de mensagem assíncrono, como uma manipulação que permite o sender de uma mensagem receber um reply assincronamente.
O Modelo de Comunicação Aglet • Reply Set • Um reply set pode conter múltiplos reply futuros e é usado para obter resultados quando também torna-se disponíveis. • Com este objeto, o sender pode também escolher para obter o primeiro resultado e ignorar respostas subsequentes.
Aglet Package – The Aglet API • É um pacote Java consistindo de classes e interfaces. Mais notadamente com as classes: - Aglet - AgletProxy - AgletContext - Message - FutureReply - AgletID
Aglet Package – The Aglet API • Usa-se para criar e operar aglets. • Contém métodos: - inicializar um aglet - manipular mensagens - despachar ou expedir um aglet - desativar ou ativar - retirar ou recolher (retracting) - clonagem - desfazer-se de um aglet (disposing)
API Aglet • Simples • Flexível • É um pacote Java consistindo de classes e interfaces. • Nome completo do pacote: com.ibm.aglet
Classe Aglet • É a classe-chave da API. • Classe abstrata que o desenvolvedor usa como classe base para criar agltes customizados. • Métodos para controlar seu próprio ciclo de vida: cloning, dispatching, deactivating, e disposing o próprio aglet
Classe Aglet • Métodos para serem sobrepostos em suas subclasses pelo programador do aglet e provê o programador com os necessários “ganchos” para customizar o comportamento do aglet.
Classe Aglet • Esses métodos são invocados pelo sistema quando certos eventos tomam lugar no ciclo de vida de um aglet.
Classe Aglet • Método dispatch: causa um aglet mover do host local ao host de destino, que é dado como argumento. • Método Deactivate: permite um aglet ser armazenado em memória secundária.
Classe Aglet • Método clone gera uma nova instância do aglet, a qual tem o estado do aglet original. • A classe Aglet é tambme usada para acessar os atributos associados com um aglet. • O objeto AgletInfo, o qual pode ser obtido por getAgletInfo(), contém os atributos embutidos do aglet, tais como seu tempo de criação e o código-base.
Classe Aglet • Como também seus atributos dinâmicos, tais como seu tempo de chegada e o endereço do seu contexto corrente. • Como criar um aglet customizado ? • 1. Importar o pacote aglet, que contém todas definições da API Aglet
Classe Aglet • Seja definir uma classe aglet MyFirstAglet, que herda da classe Aglet. import com.ibm.aglet.*; public class MyFirstAglet extends Aglet { // Put os métodos do aglet aqui }
Classe Aglet • O aglet precisa fazer inicializações específicas quando ele é criado: sobrepor seu método onCreation(). public void onCreation(Object init) { // Fazer alguma inicialização aqui ... }
Classe Aglet • Quando um aglet é criado ou quando ele chega em um novo contexto, é dado a ele, sua própria thread de execução através de uma invocação de sistema de seu método run().