Pyro vs RMI
-
Upload
diogenes-fernandes -
Category
Documents
-
view
557 -
download
5
Transcript of Pyro vs RMI
Pyro
Aluno: Diógenes A. Fernandes Hermínio
Tuesday, October 19, 2010
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
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
Server
Iniciar o servidor
Encontrar o NameServer
Instanciar o daemon
Setar um NameServer
Iniciar o main loop do daemon
Tuesday, October 19, 2010
Programa Server
CORE.INITSERVER()
DAEMON = CORE.DAEMON()
NS = NAMING.NAMESERVERLOCATOR().GETNS()
DAEMON.USENAMESERVER(NS)
DAEMON.REQUESTLOOP()
Tuesday, October 19, 2010
Instanciando um objeto
OBJ = CORE.OBJBASE()
OBJ.DELEGATETO(MANAGER())
DAEMON.CONNECT(OBJ, 'OBJ')
CLASS MANAGER(OBJECT): ... CODE ...
Tuesday, October 19, 2010
Instanciando um objeto
OBJ = MANAGER()
DAEMON.CONNECT(OBJ, 'OBJ')
CLASS MANAGER(CORE.OBJBASE): ... CODE ...
Tuesday, October 19, 2010
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
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
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
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
Logging
Pyro faz o log de todas as exceções que ocorrem
Timestamp + traceback
Desligado por default
Tuesday, October 19, 2010