Je viens de découvrir DRb (Distributed Ruby), une librairie incluse par défaut dans la distribution ruby (pas besoin de gem) pour faire du client/serveur.
Et alors me direz-vous ? Et bien c'est super simple !
Le mieux c'est un petit exemple:
Serveur:
require 'drb' class MyServer def say "hello world" end end DRb.start_service("druby://:7777", MyServer.new) DRb.thread.join
Client:
require 'drb' DRb.start_service remote_object = DRbObject.new(nil, 'druby://localhost:7777') puts remote_object.say
Résultat dans la console du client:
hello world
Quand je pense aux EJB en java et que je vois ça...
Petit bémole, il faut redémarrer le serveur si on modifie la classe MyServer... mais si on utilise des blocks on peut éviter une partie de ce désagrément, exemple:
class MyServer def say(&block) yield end end
puts remote_object.say {"hello world"}
Rem: on coupe un peu les cheveux en quatre pour dire "hello world" mais bon c'est pour la démo hein ;)
Pour en savoir plus quelques liens sur drb.
Attention l'exemple du tutorial de chad fowler sur les "songname" ne marche pas, il faut remplacer druby://hal9k:2001 par druby://localhost:7777.
Attention l'exemple du tutorial de chad fowler sur les "songname" ne marche pas, il faut remplacer druby://hal9k:2001 par druby://localhost:7777.
2 commentaires:
Sujet vraiment intéressant, merci pour l'info, ça change de CORBA et compagnie :)
Effectivement drb est super sympa ... mais c'est encore mieux quand on utilise backgroundrb !!!! et son plugin pour rails !!!
Personnellement, je l'utilise comme moteur de job pour encoder des videos ala Youtube sur mon prochain site web (qui devrait être en ligne ce week-end)
Backgroundrb c'est par ici
julien
Enregistrer un commentaire