A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação.

Apresentações semelhantes


Apresentação em tema: "O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação."— Transcrição da apresentação:

1 O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

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

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

4 Abstrações Chaves Aglet Proxy Contexto Identificador

5 Aglet Um aglet é um objeto Java móvel que visita hosts habilitados à aglets, em uma rede de computadores

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

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

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

9 Contexto É um nodo em uma rede que pode rodar múltiplas engines e cada engine pode ter múltiplos contextos.

10 Relação entre Host, Engine e Contexto Contexto A Contexto A Contexto C Contexto C Contexto Engine Processo Servidor Engine Processo Servidor Host Rede B

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

12 Identificador Um identificador é ligado a cada aglet. É globalmente único e imutável durante o tempo de vida do aglet.

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

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

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

16 Abordagem Passiva da Mobilidade Um host remoto puxa um aglet, longe de seu host corrente. ( retracting = retirar, recolher )

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

18 Troca de Informação Múltiplos aglets podem trocar informação para realizar uma determinada tarefa. ( messaging )

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

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

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

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

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

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

25 Operações Fundamentais Disposal O disposal de um aglet parará sus execução e removerá ele de seu contexto corrente.

26 O Ciclo de Vida de um Aglet Aglet Class File Disk Storage Dispatch Retract Clone CreateDeactivateActivate DisposeContext AContext B

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

28 O Modelo de Eventos Existem três tipos de listeners : Clone Listener Mobility Listener Persistence Listener

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

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

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

32 Relacionamento entre um Aglet e seus Listeners Aglet MobilityListener CloneListener PersistenceListener Clone Events Mobility Events Persistence Events

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

34 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

35 O Modelo de Comunicação do Aglet Aglet/Aplication Proxy Aglet Message Reply Message Reply

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

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

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

39 Aglet Package – The Aglet API É um pacote Java consistindo de classes e interfaces. Mais notadamente com as classes: - Aglet - AgletProxy - AgletContext - Message - FutureReply - AgletID

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

41 API Aglet Simples Flexível É um pacote Java consistindo de classes e interfaces. Nome completo do pacote: com.ibm.aglet

42 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

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

44 Classe Aglet Esses métodos são invocados pelo sistema quando certos eventos tomam lugar no ciclo de vida de um aglet.

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

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

47 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

48 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 }

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

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

51 Classe Aglet Esta invocação é um meio de dar ao aglet um grau de autonomia. O método run() é chmado toda vez que o aglet chega em ou é ativado em um novo contexto. O método run() torna-se o principal ponto de entrada para a thread de execução do aglet.

52 Classe Aglet Sobrepondo-se esse método, podemos customizar o comportamento autônomo do aglet. public void run( ) { // Fazer alguma coisa aqui.... }

53 Classe Aglet Pode-se usar o método run() para deixar o aglet dispatch ele próprio para um contexto remoto. O aglet chama seu método dispatch com a URL do host remoto como argumento.

54 Classe Aglet A URL deve especificar o host e os nomes de domínio do contexto-destino e o protocolo (ATP) usado para tranferir o aglet na rede. ATP : Agent Tranfer Protocol, desenvolvido para agentes móveis na Internet. A URL pode conter o nome do contexto remoto (se mais do que um contexto é suportado no servidor remoto).

55 Classe Aglet Se nenhum nome de contexto é especificado, o aglet se moverá para o contexto default. dispatch(new URL(atp://some.host.com/context));

56 Classe Aglet O que acontece quando dispatch() é executado ? O aglet desaparece da máquina-fonte e reaparece, com o mesmo estado do objeto, na máquina- destino especificada. Primeiro, a serialização do objeto é usada para preservar a informasção de estado do aglet.

57 Classe Aglet Serialização é a representação sequencial em bytes do aglet. Depois, o resultado da serialização é passado à camada de transferência, a qual traz o aglet (byte code e informação de estado) sobre a rede. Finalmente, os bytes transferidos são deserializados, para remontar o estado do aglet. ( ver a figura seguinte )

58 Transferência de um Aglet Sending State Byte Code Host Receiving State Byte Code Host 1 2 3

59 Interface AgletProxy AgletProxy é uma interface componente da API Aglet. Age como o manuseador de um aglet e provê um modo comum de acessar o aglet.

60 Interface AgletProxy Porque um aglet tem diversos métodos públicos que não podem ser acessados diretamente, por outro aglet, por razões de segurança, qualquer aglet que deseje se comunicar with outros aglets, deve primeiro obter o proxy e então interage através desta interface.

61 AgletProxy O AgletProxy age como um objeto-escudo que protege o aglet de aglets maliciosos. Quando invocado, o objeto AgletProxy consulta o gerenciador de segurança para determinar se o contexto de execução corrente é permitido executar o método requisitado.

62 AgletProxy Um outro papel do AgletProxy é prover o aglet com transparência de localização. Se o aglet reside em um host remoto, o proxy direciona os requsts ao host remoto e retorna o resultado ao host local.

63 AgletProxy Criando-se um aglet é uma maneira de se obter um proxy. O método AgletContext.createAglet retornará o proxy do aglet criado recentemente. Outros métodos que retornam proxy são:

64 AgletProxy AgletContex.retractAglet AgletProxy.clone AgletProxy.dispatch Outras maneiras de obtenção de proxies de aglets existentes:

65 AgletProxy O aglet pode obter seu próprio proxy por usar Aglet.getProxy(). Pode-se recuperar uma enumeração de proxies em um contexto por chamar AgletContext.getAgletProxies.

66 AgletProxy Pode-se obter um proxy para um dado identificador de aglet via o método AgletContext.getAgletProxy(). Pode-se obter um aglet proxy via passagem de mensagem. Um objeto AgletProxy pode ser colocado dentro de um objeto Message como um argumento e enviado ao aglet localmente ou remotamente.

67 AgletProxy Pode-se colocar um objeto AgletProxy dentro dema propriedade de contexto, por usar o AgletContext.setProperty e compartilhar o objeto proxy. O framework dos Aglets provê uma implementação do AgletProxy interface, assim o programador não necessita implementar esta interface.

68 Interface AgletContext Um contexto de aglet é o equivalente de um ambiente de execução do aglet. Um aglet funciona a maior parte de sua vida em um contexto do aglet. Ele é criado em um contexto. Ele dorme lá. Ele morre lá.

69 Interface AgletContext Quando um aglet viaja em uma rede, ele se move de um contexto ao outro. O contexto é um ambiente de execução uniforme para aglets em um mundo heterogêneo.

70 Interface AgletContext Um aglet usa a interface AgletContex para obter informação sobre seu ambiente e enviar mensagens ao ambiente, que inclui outros aglets correntemente ativos naquele ambiente.

71 Interface AgletContext Provê meios para manter e gerenciar aglets rodando em um ambiente, onde o host é seguro contra aglets maliciosos. A classe Aglet tem um método para ganhar acesso a seu contexto corrente: contex = getAgletContext();

72 Interface AgletContext Com acesso ao contexto, o aglet pode criar novos aglets: context.createAglet(... ) ; E pode retract (pull) aglets localizados remotamente, dentro do contexto corrente: context.retractAglet(remoteContextURL, agletID);

73 AgletContext O aglet pode também recuperar uma lista (enumeração) de proxies de seus aglets membros presentes no mesmo contexto: proxies = context.getAgletProxies(); Uma implementação da interface AgletContext é provida pelo pacote Aglet.

74 Classe Message Aglets se comunicam por trocar objetos da classe Message. Um campo de string nomeado kind distingue mensagens. O campo é estabelecido quando a mensagem é criada.

75 Classe Message O segundo parâmetro do construtor da mensagem é um argumento opcional. Message myName = new Message(my name, Jacob); Message yourName = new Message(your name ?);

76 Simple Messaging Aglet Proxy Message Handler SendMessage()

77 Diagrama de Colaboração para Criação de Aglet Run() onCreation() Aglet() createAglet()

78 Diagrama de Colaboração para Clonagem de Aglet run() onCloning() onCloned() run() onClone() run() Original Clone

79 Diagrama de Colaboração para Aglet Dispatch run() dispatch() onDispatching() onArrival() run() Origem Destination

80 Diagrama de Colaboração para Aglet Retraction retractAglet() onArrival() run() onReverting() Local Remote

81 Persistência Aglet Context DeactivateActivate

82 Diagrama de Colaboração para Liberar um Aglet dipose() onDispose() run()

83 Classe Message Tendo criado os objetos-mensagens, pode-se enviá-los para um aglet por invocar um dos seguintes métodos definidos no AgletProxy: Object sendMessage(Message msg) FutureReply sendFutureMessage(Message msg) Void sendOnewayMessage(Message msg)

84 Classe Message O objeto mensagem é passado como um argumento ao método handleMessage do aglet.. handleMessage é o método que manipula as mensagens chegando.

85 Classe Message Este método deve retornar true se uma dada mensagem é manipulada; de outro modo, deve retornar false. O transmissor saberá, então, se o aglet realmente manipulou a mensagem. No exemplo seguinte, o aglet reconhecerá e responderá a mensagens hello:

86 Classe Message Método no aglet: public boolean handleMessage(Message msg) { if (msg.sameKind(hello)) { doHello(); // Respond to the hello message... return true; // Yes, I handled this message. } else return false; // No, I did not handle tjis message. }

87 Classe Message Somente do yourName, espera-se recebr um valor de retorno: proxy.sendMessage(myName); String name = (String)proxy.sendMessage(yourName);

88 Classe Message No método handleMessage, distinguimos entre as mensagens myName e yourName, por testar o campo kind das mensagens chegando.

89 Classe Message De myName extraimos o argumento- name e para yourName é estabelecido o valor de retorno ( sendReply() ). Lembre que myName e yourName são variáveis do tipo Message.

90 Classe Message 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); // Return your name... return true; // Yes, I handled this message. } else return false; // No, I did not handle tjis message. }

91 Múltiplos Aglets Atualizando Arquivos em Paralelo Aglet Host ( U pdating )


Carregar ppt "O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação."

Apresentações semelhantes


Anúncios Google