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:
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:
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.
Essa linha acima invoca o método hello do objeto remoto Server.
Rodando o servidor:
Para inicializar o servidor digite na linha de comando:
Não será exibida nenhuma mensagem, o servidor apenas ficará esperando novas requisições remotas.
Rodando o cliente:
Quando 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:
.