Pyro vs RMI

12
Pyro Aluno: Diógenes A. Fernandes Hermínio Tuesday, October 19, 2010

Transcript of Pyro vs RMI

Page 1: Pyro vs RMI

Pyro

Aluno: Diógenes A. Fernandes Hermínio

Tuesday, October 19, 2010

Page 2: Pyro vs RMI

O que é?

PYthon Remote Objects

100% escrito em Python

Open Source (Licença MIT)

Modelo Cliente-Servidor

Conversa em arquiteturas 32-bit e 64-bit

Tuesday, October 19, 2010

Page 3: Pyro vs RMI

NameServer

Banco de dados central

Usa um script para rodar (pyro-ns)

DIOGENES-HERMINIOS-MACBOOK:RENT_A_CAR DIOFEHER$ PYRO-NS*** PYRO NAME SERVER ***

Tuesday, October 19, 2010

Page 4: Pyro vs RMI

Server

Iniciar o servidor

Encontrar o NameServer

Instanciar o daemon

Setar um NameServer

Iniciar o main loop do daemon

Tuesday, October 19, 2010

Page 5: Pyro vs RMI

Programa Server

CORE.INITSERVER()

DAEMON = CORE.DAEMON()

NS = NAMING.NAMESERVERLOCATOR().GETNS()

DAEMON.USENAMESERVER(NS)

DAEMON.REQUESTLOOP()

Tuesday, October 19, 2010

Page 6: Pyro vs RMI

Instanciando um objeto

OBJ = CORE.OBJBASE()

OBJ.DELEGATETO(MANAGER())

DAEMON.CONNECT(OBJ, 'OBJ')

CLASS MANAGER(OBJECT): ... CODE ...

Tuesday, October 19, 2010

Page 7: Pyro vs RMI

Instanciando um objeto

OBJ = MANAGER()

DAEMON.CONNECT(OBJ, 'OBJ')

CLASS MANAGER(CORE.OBJBASE): ... CODE ...

Tuesday, October 19, 2010

Page 8: Pyro vs RMI

Cliente

Código de inicialização

Encontrar o URI = NameServer + nome do objeto

Usar o URI para chamar o objeto proxy

Tuesday, October 19, 2010

Page 9: Pyro vs RMI

Código - Cliente

CORE.INITSERVER()LOCATOR = NAMING.NAMESERVERLOCATOR()SELF.NS = LOCATOR.GETNS()

URI = SELF.NS.RESOLVE('NOME_OBJETO')OBJ = CORE.GETATTRPROXYFORURI(MANAGER_URI)

Tuesday, October 19, 2010

Page 10: Pyro vs RMI

Protocolo de comunicação

Transporte é feito com TCP/IP

Usa o Procolo PYRO, mas pode usar outros.

Baseado em pickle

Por isso só é possível passar objetos “pickeables”

Tuesday, October 19, 2010

Page 11: Pyro vs RMI

Exceções

O cliente deve implementar tratamento de exceções

Elas são lançadas como se objetos realmente fossem locais

Podem ocorrer exceções que não fazem parte dos objetos, como a rede ter caído

Tuesday, October 19, 2010

Page 12: Pyro vs RMI

Logging

Pyro faz o log de todas as exceções que ocorrem

Timestamp + traceback

Desligado por default

Tuesday, October 19, 2010