DRb permite programas em Ruby se comunicar uns com os outros na mesma máquina ou através de uma rede, aplicação cliente/servidor. DRb utiliza o método de invocação remota (RMI) para transmitir comandos e dados entre os processos.
Nesse post vamos criar dois programas, o servidor e o cliente usando DRb.
Construíndo o servidor (server.rb):
1 2 3 4 5 6 7 8 9 10 11 | require 'drb' class Server def hello "Hello, This is a Distributed Ruby (DRb) Example" end end server_object = Server.new DRb.start_service('druby://localhost:9000', server_object) DRb.thread.join |
Entendendo o código do servidor:
require 'drb'
A linha acima apenas requere a biblioteca DRb, essa biblioteca que a responsável por fazer a comunicação remota. Você pode encontrar mais informações a seu respeito em: http://www.ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html.
class Server def hello "Hello, This is a Distributed Ruby (DRb) Example" end end
O código acima apena cria uma classe e o método hello, que imprime uma mensagem.
server_object = Server.new DRb.start_service('druby://localhost:9000', server_object) DRb.thread.join
Essas três linhas acima que fazem o servidor funcionar, a primeira linha apenas faz a instância da classe Server, a segunda linha inicia o serviço remoto no endereço druby://localhost:9000 disponibilizando o objeto server_object, a terceira linha inicia uma thread no servidor para aceitar requisições remotas.
Construíndo o cliente (client.rb):
1 2 3 4 5 6 | require 'drb' DRb.start_service obj = DRbObject.new(nil, 'druby://localhost:9000') puts obj.hello |
Entendendo o código do cliente:
require 'drb'
A linha acima apenas requere a biblioteca DRb, essa biblioteca que a responsável por fazer a comunicação remota. Você pode encontrar mais informações a seu respeito em: http://www.ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html.
DRb.start_service obj = DRbObject.new(nil, 'druby://localhost:9000')
As suas linhas acima inicia o serviço remoto com o servidor, a primeira inicializa o serviço e a segunda estabelece conexão com o servidor no endereço druby://localhost:9000 obtendo o objeto Server.
puts obj.hello
Essa linha acima invoca o método hello do objeto remoto Server.
Rodando o servidor:
Para inicializar o servidor digite na linha de comando:
ruby server.rbNão será exibida nenhuma mensagem, o servidor apenas ficará esperando novas requisições remotas.
Rodando o cliente:
ruby client.rbQuando você rodar o cliente terá como retorno a mensagem:
Hello, This is a Distributed Ruby (DRb) Example
Pronto! Esse recurso é muito interessante. ;-)
Se você gostou desse texto e acha que ajudou você, me recomende:
.
