Liste des cours‎ > ‎

Communication structurée (21 novembre)

Maintenant que nous savons calculer des chemins à partir de la liste des stations, nous allons maintenant récupérer cette liste sur le réseau depuis un serveur communiquant en 0MQ.

Lorsqu'on échange des données, il est souvent préférable de passer par un format standardisé : XML, JSON, etc. Il existe des parsers de ces formats dans la plupart des langages, et cela réduit donc le temps nécessaire à l'implémentation de services compatibles.

Nous avons choisi d'utiliser JSON, qui a l'avantage de pouvoir être généré très facilement et qui dispose d'un bon support dans Java à travers plusieurs bibliothèques. Par exemple, la bibliothèque Jackson est à la fois performante et facile d'utilisation.

Le protocole de communication

Le serveur de cartes, qui est accessible par une socket 0MQ en mode REQ attend une commande sous la forme d'un objet JSON, c'est-à-dire un dictionnaire. Chaque commande a le format suivant :
  • request : cette entrée contient la commande à exécuter
  • les autres entrées du dictionnaire correspondent aux arguments échéants

La réponse est envoyée sous la forme d'une entité JSON valide, et dépend de la commande.

Un exemple pourrait être, pour un serveur de calcul :

=> { "request" : "divide", "divisor" : 3, "dividend" : 36 }

<= 12


Dans le cas du serveur de carte une seule commande est disponible à l'heure actuelle : la commande map qui renvoie un tableau de tableaux des stations. Exemple :

=> { "request" : "map" }

<= [ [ "Place d'Italie", "Corvisart", "Glacière" ], [ "Place d'Italie", "Campo Formio" ] ]

Adaptation du programme de recherche du plus court chemin

Votre travail consiste à adapter durant cette séance votre programme, afin que si le premier argument est une URI (i.e., s'il contient successivement les trois caractères "://"), la carte soit récupérée depuis le serveur de cartes indiqué dans cette URI plutôt que depuis un fichier. Bien entendu, s'il ne s'agit pas d'une URI, le programme doit continuer à fonctionner comme avant.

Un serveur de cartes est disponible à l'URI tcp://a405-01.enst.fr:9234.

Comments