Etude des spécifications XML-RPC

Un article de LodelWiki.

Jump to: navigation, search

-- XML-RPC --

XML-RPC est un ensemble de spécifications qui permettent à des applications tournant dans des environnement totalement différents de communiquer facilement. Dans le cas de Lodel, à l'image de ce que fait lien Dotclear, XML-RPC pourrait être utilisé pour faire communiquer un plug-in Firefox d'ajout de documents avec un site sous Lodel.

En pratique, on appelle une procédure distante via le protocle HTTP pour le transport des données et le language XML pour l'encodage de celles-ci.

Voici un schéma de fonctionnement tiré du site de XMLRPC

Image:Schema_XMLRPC.jpg

Il faut donc implémenter côté serveur (notre site Lodel) une interface XML-RPC, acceptant un ensemble de méthodes que le client pourra appeler.

Voici un exemple simple de serveur XML-RPC : [1]

Prenons un exemple concret côté Lodel : notre serveur XMLRPC devra accepter un ensemble de méthodes permettant :

 * l'ajout d'entité
 * le taggage d'entité : assigner des mots clés à un document.
 * ...

Il faudra donc définir un jeu de méthode que le client pourra appeler :

 * lodel.addEntity
 * lodel.tagEntity

Méthodes qui lorsqu'elles seront appelées se chargeront de transcrire la demande du client en interrogation compréhensible par Lodel.

C'est exactement ce que fait Dotclear. Son serveur XMLRPC acceptent un ensemble de méthode standardisées (blogger, metaBlog,...) et transcrit ces appels en langage 'Dotclear', c'est à dire en appelant la bonne méthode PHP définie dans le côde propre à Dotclear.

 Exemple : la méthode 'blogger.newPost' dont le but est l'ajout d'un billet donne lieu à l'appel de la méthode $blog->addPost définie dans le code de
 Dotclear pour l'ajout de billet. Ceci après réception des données, vérification des paramètres et erreurs.


Pour implémenter un serveur XMLRPC en PHP il existe des librairies utilisables facilement. C'est le cas de Incutio, utilisée notamment par Dotclear. Cette librairie propose un ensemble de classe permettant de réaliser des serveurs XMLRPC mais aussi des clients (ce qui n'est pas notre intérêt actuel). Il est simplement nécessaire de surcharger la classe server de Incutio afin de définir l'ensemble des méthodes disponibles, leurs arguments,...


Pour finir un exemple très intéressant utilisant les technologies XMLRPC : une classe PHP permettant d'interroger le serveur XMLRPC de Google.