Les petites cases

Que peut-on faire avec un Web services ?

On entend de plus en plus parler de Web services. Flick'R, Amazon, Yahoo mais surtout Google avec Google Maps et Google adwords, tous les sites dans le vent et qui veulent faire Web « machin chose » proposent leurs Web services. Il existe même des applications qui mixent plusieurs Web-services : les mashups. En bon geek, utilisateur de la dernière technologie à la mode, j'avais donc indiqué sur ma todo list de regarder de plus près le fonctionnement des Web services. J'en utilise régulièrement un pour ce site, puisque le ServOO, l'application intégrée à Lodel qui permet la conversion de fichiers issus de mon traitement de texte (Open Office, mais ça marche aussi avec Word) vers XML est un Web service. Et, j'ai en tête quelques idées de Web services à destination des chercheurs en sciences humaines, ça devenait donc urgent.

Comment ça marche concrètement ?

Un Web service permet d'échanger des données entre deux sites grâce à XML. Il utilise ce bon vieux schéma client-serveur qui est la base d'Internet et de pratiquement toute l'informatique actuelle. Il existe trois protocoles ou langages/systèmes pour mettre en place un Web services :

  1. SOAP, mis au point au W3C ;

  2. REST dont les fondements ont été mis au point par Roy Thomas Fielding ;

  3. XML-RPC, le pionnier qui est de moins en moins utilisé supplanté par les deux précédents.

Je ne vais pas rentrer dans le détail des différents systèmes. Le principe général est toujours le même, une question est posée à un serveur soit sous forme de fichier XML (SOAP) ou sous la forme d'une URL comme avec un formulaire Web (REST). Pour chaque Web service sont définies des méthodes, c'est à dire des questions avec des arguments pour chacune des questions. Si la question est bien posée, le serveur renvoie une réponse sous la forme d'un fichier XML quel que soit le protocole utilisé. La structure du fichier XML dépend évidemment du Web service et de la question posée.

Le protocole OAI mis au point dans le cadre des archives ouvertes de publications scientifiques et dont Blogokat nous dresse le portrait depuis plusieurs billets est un très bon exemple d'un protocole REST (cf celui de l'Ecole des chartes).

Pour finir et pour faciliter l'utilisation d'un Web service, des API (Application Programming Interface), c'est à dire des scripts écrits dans un langage de programmation précis, sont mis à disposition pour l'exploiter plus facilement. En effet, les Web services sont a-priori indépendants de la plate-forme, du logiciel utilisé ou du langage de programmation utilisé. Ce sont les API ou les applications créées à partir d'elles qui le sont.

Passons à l'aspect concret des choses

En début de week-end, Manue a commencé à me montrer en détail le service de partages des photos, flick'R qui appartient maintenant à Yahoo. J'avoue que nous nous sommes rapidement pris au jeu, car ce site et les services qui y sont associés sont très bien faits et il est bien difficile de le prendre en défaut.

Bref, possédant un compte Yahoo, j'ai créé mon compte Flick'R et j'ai commencé à m'amuser un peu. J'ai saisi l'occasion pour découvrir les Web services et, aussi, pour résoudre un problème qui me tracassait dans les petites cases : je n'ai pas assez d'espace dans mon hébergement pour mettre en ligne mes photos. Grâce au Web service de Flick'r, je peux donc afficher les photos hébergés sur Flick'r directement dans l'interface des petites cases.

Comme pour la très grande majorité des Web services, j'ai ensuite pris une clé pour utiliser le Web services. C'est gratuit, mais ça leur permet de contrôler un peu l'utilisation qui est faite de leurs Web services, ça finit par leur coûter en bande passante et il faut qu'il puisse contrôler, cela me paraît tout à fait normal. J'ai ensuite récupéré une API pour ce Web services écrite en PHP : phpFlickr. Après quelques ajouts dans le code source de lodel (ce serait trop long de rentrer ici dans les détails), j'ai pu publier directement mes photos dans mon site tout en utilisant le langage de script propre à Lodel : le lodelscript1. Ainsi, je peux directement publier des albums photos sur les petites cases en choisissant le ou les tags qui m'intéressent ou inclure une photo provenant de Flick'r directement dans le billet comme le montre le billet précédent. J'en ai évidemment profité pour ajouter de nouveaux albums et de nouvelles photos et d'autres vont suivre bientôt ;-)

En guise de conclusion à cette petite expérience du weel-end

Payant mon hébergeur et ma bande passante, ce genre de fonctionnalités me permet de faire des économies substantielles ; il n'existe qu'un défaut, c'est un peu long à charger, car il faut qu'il interroge le serveur et il faut le temps que votre navigateur Web charge les images. Dans le cadre de la recherche scientique qui n'a pas forcément les problèmes de stockage (quoique...) et de bande passante, on pourrait ainsi facilement mettre à disposition sous forme de Web services des données provenant d'un corpus, d'un dictionnaire ou d'une base de données quelconque ce qui permettrait ensuite à d'autres chercheurs d'intégrer ces données dans leurs propres sites ou leurs propres publications électroniques. Ce serait quand même une bonne idée de partager toutes ces données qui dorment dans tous les ordinateurs des chercheurs en France et de montrer concrètement le processus intellectuel de collations directement sur un site des sources, des outils de travail et des recherches existantes ce que fait quotidiennement le chercheur, vous ne croyez pas ?

Quelques notes en passant

1 Au passage, encore félicitations et merci à Ghislain, c'est du bonheur et du gâteau d'ajouter ce genre de fonctionnalités dans lodel, même pour un nul en PHP comme moi :-)

Édition électronique Web services Geekeries — 

Commentaires

Bonjour, je me permet de te poser une question car tu as l'air de bien connaitre les web services. Je voudrais passer une classe en parametre depuis la page web vers la page serveur de mon web service, j'utilise visual web developper. Est ce que tu aurais une idée ou pourrais tu me conseiller de la doc? Merci d'avance. Au revoir. Helene
Connaître, c'est vite dit, disons que j'en connais le principe général. Quant à ta question, elle ne concerne pas spécifiquement les web services, mais plutôt les aspects en programmation, en plus je ne connais pas les outils de Krosoft...(j'évite de me salir les mains ;-) ), donc je ne peux pas t'aider, désolé.