Rugby : le broker Rebol

Article paru dans le magazine Login numéro 89

Reproduction interdite. Tous droits réservés à Posse Press et Olivier Auverlot


 

Rugby fait déjà partie des produits incontournables écrits en Rebol. Son objectif est de permettre l'exécution de code Rebol sur une machine distante et le rapatriement de résultat sur le poste client émetteur de la requête. Grâce à lui, vous allez pouvoir mettre en place des services distribués, accessibles de partout et partagés entre plusieurs applications. Cette technologie est au cœur du "distributing computing", l'une des principales raisons d'être de Rebol.

 

Un produit "magique"

Rugby est développé par Maarten Koopmans et est entièrement écrit en Rebol. Il fonctionne avec les différentes versions de l'évaluateur et est totalement indépendant de la plate-forme d'exécution. La dernière version porte le numéro 4.0.0. Elle est téléchargeable à l'adresse http://www.rebolforces.com/~erebol. L'objectif de ce produit est de permettre l'exécution de méthodes distantes aussi simplement que si elles étaient déclarées sur le poste client. Pour faire cela, vous devez inclure la librairie RUGBY.R dans votre application client. Ce "moteur" est à la fois client et serveur : un client Rugby peut ainsi devenir le serveur Rugby d'un autre client et permettre l'échange d'informations sur le modèle du peer to peer. La seconde étape consiste à ouvrir un dialogue avec un serveur Rugby à l'aide du mot GET-RUGBY-SERVICE. Votre client a alors connaissance des fonctionnalités que lui propose le serveur et peut les utiliser de la même manière que si elles étaient présentes sur le client lui-même. Il est important de retenir que le code appelé n'est jamais rapatrié sur le poste client, tout est exécuté à distance sur le serveur. Seul le résultat transite entre les deux machines.

 

Un exemple d'utilisation de Rugby

Pour mieux comprendre, nous allons mettre en place un service Rugby fonctionnant sur une machine Linux. L'installation sur le serveur et sur le client se limite à la décompression de l'archive RUGBY41.TAR.GZ. Pour tester l'exemple, il vous suffit de placer les deux scripts au même niveau que le fichier RUGBY.R. L'objectif est de mettre en place un service MEMINFO dont la fonction est de lire le contenu du fichier /proc/meminfo de Linux. Le client appelle cette méthode et le serveur lui renvoie l'état de la mémoire du serveur.

Vous allez commencer par mettre en place la partie serveur. Il s'agit ici de définir la fonction MEMINFO et de la mettre à disposition d'éventuels clients :

 

#!/usr/bin/rebol -s

 

REBOL []

do %rugby.r

meminfo: func [] [

        return read/lines %/proc/meminfo

]

serve [ meminfo ]

 

Le mot SERVE permet de fixer les fonctions accessibles à un client. Dans cet exemple, il n'y en a qu'une mais vous pouvez bien sûr ajouter d'autres fonctions au bloc. Rendez exécutable ce script par un CHMOD +X MEMINFO.R et lancez-le en arrière plan. Si tout se passe bien, votre premier serveur Rugby est en attente de connexion. Vous pouvez maintenant écrire la partie cliente. Le script MEMINFO-CLIENT.R débute également par l'inclusion de la librairie RUGBY.R. Vous devez ensuite déclarer le serveur Rugby appelé en indiquant l'adresse IP et le port sur lequel celui-ci écoute. A partir de maintenant, vous pouvez utiliser les fonctions distantes qu'il héberge. Rien ne distingue ici le mot MEMINFO des autres mots de Rebol si ce n'est que ce mot est exécuté par un serveur distant.

 

REBOL []

do %rugby.r

do get-rugby-service tcp://172.29.143.1:8001

foreach ele meminfo [ print ele ]

La fonction MEMINFO retourne l'état de la mémoire sur le serveur distant.

 

Un produit performant

Ce qui étonne avec Rugby, c'est la simplicité et la rapidité avec laquelle vous pouvez mettre en place des services distribués. Quelques minutes suffisent pour transformer n'importe quel script Rebol en un service réparti sur le réseau. De plus, Rugby met à votre disposition une quantité d'options qui en font un produit remarquable. Vous pouvez utiliser le protocole HTTP pour traverser un Firewall. Rugby permet de crypter les données qui sont échangées entre le client et le serveur. Vous avez même la possibilité de déclencher plusieurs tâches simultanément et de récupérer les résultats sans avoir à vous soucier de l'ordre dans lequel ils vous parviennent.

Olivier Auverlot

olivier.auverlot@free.fr

Retour