Choix d'un protocole réseau

g.lebourgeois

Membre actif
30 Décembre 2006
174
4
Villejuif
www.guillaume-lebourgeois.fr
Bonjour à tous,

je vais avoir besoin dans le cadre d'un projet d'établir une communication entre des clients (en quantité modérée) et un serveur.

Les informations communiquées sont essentiellement du texte, et ponctuellement des fichiers binaires (tarball, zip, ...). En ce qui concerne le texte, l'utilisation du format XML serait par exemple un plus.

La communication pourra être par moment assez intense en échanges serveur-client, et donc nécessiter un protocole assez physique, capable de supporter la charge.

La difficulté réside donc dans le choix du protocole, et ensuite de son implémentation (bibliothèque) à à utiliser. Nous sommes dans un contexte de travail en C++, qui doit être pour la partie client obligatoirement multi-plateforme (UNIX, Windows essentiellement).

Nous avons pour le moment pensé à SOAP, mais je crains que les performances soient un peu légères. Merci beaucoup pour votre aide !
 
Tu peux aussi te passer des surcouches et faire directement du tcp/ip, si c'est juste pour du texte et des fichiers binaires, c'est pas hyper compliqué.
Tu peux nous en dire un peu plus sur ce dont tu as besoin comme performances et les machines sur lesquelles ça va tourner ? parce que soap ça peut quand même supporter des charges relativement importantes.
 
Il s'agit pour la partie plutôt musclée d'un crawler distribué. D'un côté un ordonnanceur, de l'autre des unités de crawl placées sur différents serveurs. Ces unités doivent communiquer en permanence avec l'ordonnanceur pour lui envoyer les données récupérées et connaître les nouvelles URLs à crawler.
Le flux de communication est donc constant, et une unité ne doit pas se retrouver en "pause" parce que l'information met trop de temps à être envoyée/reçue.
 
Avec ce que tu décris, Corba me semble donc tout à fait approprié : multi-langages (C++ et Java en particulier) et multi-plate-formes (Unix, Windows, Mac).
Pour le C++, il te reste juste à choisir la bonne implémentation, et là le choix est délicat.
Pour le Java, c'est dans les API standards.
 
Il s'agit pour la partie plutôt musclée d'un crawler distribué. D'un côté un ordonnanceur, de l'autre des unités de crawl placées sur différents serveurs. Ces unités doivent communiquer en permanence avec l'ordonnanceur pour lui envoyer les données récupérées et connaître les nouvelles URLs à crawler.
Le flux de communication est donc constant, et une unité ne doit pas se retrouver en "pause" parce que l'information met trop de temps à être envoyée/reçue.

C'est juste le temps de réponse qui te pose problème pour les perfs alors ? Pourquoi tu fais pas un thread à part sur les crawlers pour gérer la com et aller chercher le lot d'URL suivant avant que le traitement en cours soit terminé ? Comme ça tu perds pas de temps.
 
Bon,
le Corba ayant l'air d'avoir un paquet d'atouts, je pense me tourner vers lui. J'ai choisi la bibliothèque OmniORB, et il ne me reste plus qu'à jouer avec. Seul souci, la première mise en place n'est franchement pas évidente, et je n'arrive pas à trouver de documentation/tutoriel qui soit claire et explicite pour m'assister...

Auriez-vous donc en tête de bonnes références pour débuter avec Corba en C++, voire avec OmniORB ? merci !