Plataforma para Agentes

Documentos relacionados
Plataforma para Agentes

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

User Datagram Protocol

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Instituto Superior de Engenharia de Lisboa

Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC, Programação em Comunicações

SISTEMAS DISTRIBUÍDOS

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

JavaTM RMI - Remote Method Invocation

Data and Computer Network Endereçamento IP

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Programação com Sockets

Sistemas Distribuídos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Módulo 13. Socket. Programação Orientada a Objetos Java (Rone Ilídio)

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Middleware de Aplicações Paralelas/Distribuídas

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

4 Conceito de Herança

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Sockets e Threads em Java

Java TM Applets. Java Deployment Course: Aula 3. por Jorge H. C. Fernandes DI-UFPE 30 de Abril de 1999

Funcionalidade e Protocolos da Camada de Aplicação

Sistemas Distribuídos

Camada de Aplicação da Arquitetura TCP/IP

ESQUEMA AULA PRÁTICA 1

PADI 2014/15. Aula 3.Net Remoting

ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java.

Serviços de Comunicações Capítulo 3

ESQUEMA AULA PRÁTICA 1

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Projecto hipotético para resolvermos hoje

Palavras Reservadas da Linguagem Java

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Redes de Computadores. A arquitectura protocolar TCP/IP

Programação Java. Tratamento de Exceções

Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile)

Programação por Objectos. Java

Message Oriented Middleware (MOM)

JADE : Java Agent DEvelopment Framework JADE

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

Resumo das Propriedades de UDP e de TCP

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Arquitectura de Redes

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

STD29006 Sistemas Distribuídos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

JAVA. Professor: Bruno Toledo

Programação Na Web. Servlets: Ciclo de Vida. Agenda. Visão geral sobre ciclo de vida. Nascimento de uma Servlet. Execução de uma Servlet

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

Integração por Web Services

Agilizando o processo de redeploy de aplicações Java

Protocolos e Serviços de Redes

Sumário. Message Oriented Middleware (MOM) Sincronização na Comunicação. Comunicação Assíncrona

Firewall - Inspeção com estado. (Stateful Inspection)

Redes de Computadores

Boas práticas com Orientação a Objetos. Paulo Silveira

SAN (Storage Area Network)

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

Sistemas de Telecomunicações 2012/2013

Tratamento de Exceções

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Redes de comunicação. Mod 2 Redes de computadores. Professor: Rafael Henriques

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC:

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Paradigmas de Computação Paralela

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Redes de Computadores II. Programação com Sockets em Python

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

TITULO: N o : REVISÃO: PROCESSO DE INSTALACAO E CONFIGURACÃO SCX 6545

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II JAVA Décima Segunda Aula

Programação Orientada a Objetos

Módulo 3 Nível Transporte

Protocolos e Serviços de Redes

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Tratamento de Exceções em Java

CEF 2 PLANIFICAÇÃO ANUAL. Instalação e Configuração de. Computadores em Redes Locais e à Rede Internet. Ano Letivo 2012/2013

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

Java Spaces Exemplos

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Linguagem Java - Introdução

Aplicações com Banco de Dados e Cliente-Servidor

Conexão do Banco de Dados localhost

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Linguagem de Programação II Implementação

Programação Estruturada e Orientada a Objetos

Prof. Marcelo Cunha Parte 6

Prof. Rogério Rocha 1

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Transcrição:

Plataforma para Agentes JATLite - Java Agent Template, Lite O que é o JATLite? http://java.stanford.edu/ http://www.fe.up.pt/~eol/aiad/jatlite/doc/index.html Pacote de programas em Java permitindo: rápida criação de Agentes de Software e sistemas que comunicam, usando a Internet, de forma robusta. Capacidades específicas de comunicação De uso geral. A arquitectura dos Agentes é deixada ao projectista

JATLite: Infraestrutura Agent Message Router (AMR) Encaminhador de Mensagens Agentes JATLite aceita alteração dinâmica dos endereços Registo de nome e password, conecta/desconecta da Internet, envia e recebe Uso de TCP/IP standard e sockets para a comunicação Message Router programa em Java stand-alone correndo no host ligado à Internet Encaminha as mensagens entre agentes. Facilita informação sobre endereços IP Agentes applets usam o Router correndo na máquina do servidor HTTP como proxy para comunicar com outros Agentes

JATLite: Arquitectura Arquitectura do JATLite como uma hierarquia de camadas Templates (moldes) para a construção de Agentes Classes Java pré-definidas em diversas camadas facilitando a construção dos Agentes Protocol Layer Router Layer KQML Layer Pacotes Base Layer Abstract Layer Camadas JATLite

JATLite: Arquitectura Camadas JATLite Abstract Layer classes abstractas necessárias à implementação JATLite Base Layer communicação TCP/IP básica sem restrições na linguagem e protocolo de comunicação KQML Layer restrição da linguagem: memorização e análise ( parsing ) de Mensagens em KQML Router Layer routing (encaminhamento) das mensagens em vez de polling(directo): todos os agentes enviam/recebem mensagens via router ultrapassa restrições de segurança dos applets podendo comunicar com agentes em outras máquinas 2 pacotes importantes: RouterLayer.AgentClient: package para os agentes clientes RouterLayer.Router: package do router

JATLite: Arquitectura Camadas (Layers) do JATLite Protocol Layer suporta os serviços standard da internet: SMTP (simple mail), FTP agentes stand-alone podem usar os serviços existentes SMTP e FTP sem os serviços proxy do Router agentes applet tem de usar o Router como proxy para ligar aos servidores SMTP ou FTP em outras máquinas diferentes KQML message Router (FTP Proxy) KQML message Applet Agent Data FTP FTP Server FTP Stand-alone Agent

JATLite:Router Router Polling (directo) vs. Queuing (indirecto) Queuing Agente emissor Polling Ligação crítica Agente receptor - problemas quando a ligação não pode ser establecida (N receptores) Agente Ligação crítica Router Ligação do lado do receptor Agente emissor receptor - memorização de mensagens (queuing): guarda mensagem - mecanismo de routing : envia mensagem quando ligação do lado do receptor está establecida (Receptor ligou ao Router) Agent Name Service (ANS) Router é um ANServer mantendo os endereços dos Agentes, que podem alterar-se dinamicamente não é necessário para a passagem de mensagens mas um agente pode perguntar ao Router o endereço de outro Agente

JATLite:Router Router Comunicação dos Agentes Applets Browser Applet Agent HTTP Server Máquina Router Stand-alone Agent Applet Agent

Características do Router Message queuing As mensagens são memorizadas em ficheiros e recuperadas ou apagadas de acordo com o pedido do agente Message routing As mensagens serão dirigidas para os receptores apropriados quando possível Agent Name Service Registo só agentes que se registaram podem usar o Router Segurança teste de segurança usando a password do agente com um dado nome Lista de Agentes JATLite:Router mensagem para conhecer todos agentes registados e seus estados de ligaçã

JATLite:Router Características do Router Desligar mensagem de desligar interrupção acidental (sem mensagem) agentes stand-alone : Reserva de Mensagem» Router testa ligação ao agente em períodos temporais» falhando essas tentativas várias vezes, o agente é apagado do registo» Período de tempo e número de vezes de teste são parâmetros dados podem reservar-se mensagens para serem enviadas num tempo e endereço específicos

Exemplo - Router Layer JATLite:Exemplo import java.io.*; import Abstract.*; import KQMLLayer.*; import RouterLayer.AgentClient.*; public class PingPong extends RouterClientAction { public static String localhost = brooks.fe.up.pt ; Router Layer criação de de Agente public PingPong(String id, String pw, String host, int port) throws Exception { super(); //RouterClientAction constructor //id,host,port,type,description String s = id+, +host+, +port+,messagerouter,(agent-info :password +pw+ ) ; Address myaddress = new Address(s); s = Router,alf.fe.up.pt,1234,MessageRouter,(MessageRouter) ; Address routeraddress = new Address(s); s = RouterRegistrar,alf.fe.up.pt,1235,MessageRouter,(MessageRouterRegistrar) ; Address registraraddress = new Address(s); setmyaddress(myaddress); //agent address setrouteraddress(routeraddress); //Router address setregistraraddress(registraraddress); //registrar address try { createserverthread(myaddress.getid getid(), Thread.NORM_PRIORITY); register(); //register to Router connect(); //connect to Router } catch(connectionexception e) { throw new Exception(e.toString()); } //server listener

JATLite:Exemplo public boolean Act(Object o) { String message = (String) o; //invoked automatically when a message is received try { KQMLmail mail = new KQMLmail(message, 0); //KQMLmail wrap the KQMLmessage _mailqueue.addelement(mail); //message repository (to delete message after) KQMLmessage kqml = mail.getkqmlmessage(); //get KQMLmessage object String perf = kqml.getvalue( performative ); String content = kqml.getvalue( content ); } if(perf.equals( tell ) && content!= null) { System.out.println(content); acknowledge(kqml.getvalue( sender ), content); addtodeletebuffer(0); } else { senderrormessage(kqml); return false; } } catch (Exception e) { return false; } return true; //send delete message to Router Exemplo-Router Layer Exemplo public void processmessage(string command, Object obj) {} //not implemented

JATLite:Exemplo Exemplo - Router Layer protected void acknowledge(string receiver, String tocontent) throws Exception { KQMLmessage sendkqml = new KQMLmessage(); sendkqml.addfieldvaluepair( performative, tell ); sendkqml.addfieldvaluepair( sender, this.getname()); sendkqml.addfieldvaluepair( receiver, receiver); //... if(tocontent.equals( (ping) )) sendkqml.addfieldvaluepair( content, (pong) ); else sendkqml.addfieldvaluepair( content, (ping) ); } sendmessage(sendkqml); //send message to Router: throws ConnectionException protected void senderrormessage(kqmlmessage kqml) throws Exception { String msg = (error :sender + this.getname() + :receiver + kqml.getvalue( sender ) + :content ( + kqml.getsendstring() + )) ; sendmessage(msg); //send Router: throws ConnectionException and ParseException addtodeletebuffer(0); //send delete message to Router } public static void main(string argv[]) throws Exception { PingPong pinga = new PingPong( ping, xyz, localhost, 2222); //create pinga PingPong ponga = new PingPong( pong, hjk, localhost, 2223); //create ponga pinga.start(); ponga.start(); //start agent action pinga.sendkqmlmessage( (tell :sender + pinga.getname() + :receiver + ponga.getname() + :content (ping)) ); //or sendmessage sleep(60000); pinga.disconnect(); ponga.disconnect(); //disconnect from Router pinga.unregister(); ponga.unregister(); //unregister from Router pinga.endaction(); ponga.endaction(); //clean up and stop agent action System.exit(0); Setembro } 2003

Plataforma para Agentes: PVM PVM: Parallel Virtual Machine - Desenvolvida no início dos anos 90 tem dezenas de milhar de utilizadores - Considerada como um standard de facto para computação distribuída - Características: -Redes Heterogéneas (liga diferentes plataformas e linguagens) - Entrada/saída dinâmica de participantes - Tarefas podem aparecer/desaparecer dinamicamente - passagem de mensagens (envio e recepção de blocos, envio para grupos,...) - Grupos dinâmicos - Tolerância a falhas detectadas automaticamente - Ferramentas de debug próprias (XPVM) - Corre em Unix/Linux e Windows - Consome cerca de 5Mb na instalação - obtida em: htt://www.epm.ornl.gov/pvm/pvm_home.html

Plataformas para Agentes Outras PLATAFORMAS para desenvolvimento e comunicação de Agentes: JINI da SUN microsystems; JAVA Spaces; Leasing http://www.binnetcorp.com/jinni/ JADE Java Agent Development Environment; de acordo com as normas da FIPA http://sharon.cselt.it/projects/jade BEEGENT fornecido pela Toshiba; facilidades para desenvolver agentes BDI; KQML http://www2.toshiba.co.jp/beegent/index.html ZEUS fornecido pela BT; editor de ontologia simples; KQML http://www.labs.bt.com/projects/agents/zeus/index.htm AGLETS da IBM; Agentes móveis http://www.trl.ibm.com/aglets/ JATLiteBean: desenvolvimento do JATLite http://kmi.open.ac.uk/people/emanuela/jatlitebean/index.html