0
Pyro
                  Aluno: Diógenes A. Fernandes Hermínio

Tuesday, October 19, 2010
O que é?

                   PYthon Remote Objects

                   100% escrito em Python

                   Open Sou...
NameServer
                   Banco de dados central

                   Usa um script para rodar (pyro-ns)




          ...
Server

                   Iniciar o servidor

                   Encontrar o NameServer

                   Instanciar o ...
Programa Server
                            CORE.INITSERVER()

                            DAEMON = CORE.DAEMON()

       ...
Instanciando um objeto
                  CLASS MANAGER(OBJECT):
                    ... CODE ...




                     ...
Instanciando um objeto
                  CLASS MANAGER(CORE.OBJBASE):
                    ... CODE ...




               ...
Cliente

                 Código de inicialização

                 Encontrar o URI = NameServer + nome do objeto

       ...
Código - Cliente
             CORE.INITSERVER()
             LOCATOR = NAMING.NAMESERVERLOCATOR()
             SELF.NS = L...
Protocolo de
                  comunicação

                   Transporte é feito com TCP/IP

                   Usa o Pro...
Exceções

                   O cliente deve implementar tratamento de
                   exceções

                   Elas...
Logging


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

                   Timestamp + traceback

  ...
Upcoming SlideShare
Loading in...5
×

Pyro vs RMI

520

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
520
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Pyro vs RMI"

  1. 1. Pyro Aluno: Diógenes A. Fernandes Hermínio Tuesday, October 19, 2010
  2. 2. 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
  3. 3. 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
  4. 4. Server Iniciar o servidor Encontrar o NameServer Instanciar o daemon Setar um NameServer Iniciar o main loop do daemon Tuesday, October 19, 2010
  5. 5. Programa Server CORE.INITSERVER() DAEMON = CORE.DAEMON() NS = NAMING.NAMESERVERLOCATOR().GETNS() DAEMON.USENAMESERVER(NS) DAEMON.REQUESTLOOP() Tuesday, October 19, 2010
  6. 6. Instanciando um objeto CLASS MANAGER(OBJECT): ... CODE ... OBJ = CORE.OBJBASE() OBJ.DELEGATETO(MANAGER()) DAEMON.CONNECT(OBJ, 'OBJ') Tuesday, October 19, 2010
  7. 7. Instanciando um objeto CLASS MANAGER(CORE.OBJBASE): ... CODE ... OBJ = MANAGER() DAEMON.CONNECT(OBJ, 'OBJ') Tuesday, October 19, 2010
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. Logging Pyro faz o log de todas as exceções que ocorrem Timestamp + traceback Desligado por default Tuesday, October 19, 2010
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×