Résolu Communication Inter-Process

  • Auteur de la discussion Rocky75
  • Date de début

Rocky75

Expert
Je débute dans le monde de l'IPC (Inter-Process Communication). Pour faire dialoguer 2 applications distantes sous Windows, j'ai utilisé le mécanisme des pipes nommées, et ça marche très bien.

Dans l'optique d'aller plus loin, je voudrais avoir l'avis d'un spécialiste sur l'aspect performances. Est-ce que les pipes sont plus/moins rapide que les sockets?
J'ai l'impression que les sockets sont plus complexes à utiliser, mais qu'elle présentent l'intérêt de faire dialoguer des applis sous des OS différents. Mais les sockets permettent-elles aussi une commnication plus efficace, plus performante?

Merci,
Eric
 

zeb

Modérateur
Meilleure réponse
Salut, cher ami.

Que voilà une question intéressante !

En revanche, qu'il est saugrenu de faire des tubes nommés sous Windows. :lol:
Le tube, c'est l'art de communiquer par excellence sous UNIX, qu'il soit anonyme ou nommé, où il est redoutable d'efficacité, les entrées/sorties étant gérées nativement par le système, par les fonctions standards.

La communication par socket (si j'ai traduit pipe par tube, je me garderai bien de traduire socket) est encore une innovation du monde UNIX. Son implémentation diffère un peu en fonction du protocole, mais colle plus ou moins au modèle modèle OSI, et à ses 7 couches
Code:
Application
    |
    v
Présentation
    |
    v
  Session
    |
    v
 Transport
    |
    v
  Réseau
    |
    v
  Liaison
    |
    v
 Physique

    |
    |
    |
    |
    v

 Physique
    |
    v
  Liaison
    |
    v
  Réseau
    |
    v
 Transport
    |
    v
  Session
    |
    v
Présentation
    |
    v
Application
Beaucoup de traitements, de contrôles et de vérifications, voire d'acquittements et de comptes-rendus sont nécessaires pour implémenter une communication par socket.

Donc une communication par tube est normalement bien plus rapide mais ne concerne que les processus d'un même système.
En revanche, la communication par socket est bien plus souple et par là universelle. C'est elle qui assure la communication sur Internet par exemple.

Ça, c'est la théorie. Parce que pour implémenter le bon principe des tubes nommés UNIX, les ingénieurs de Microsoft ont codé un système client-serveur qui se rapproche énormément de la mécanique socket :/ :sarcastic: Donc, il ne s'agit là que d'une imitation dans l'interface. Je suppose que toute la mécanique des sockets n'est pas reproduite et qu'il en résulte quand même des gains en performance.

Pour info, outre les tubes et les sockets, on communique aussi entre processus par mémoire partagé+sémaphore.

Cet avis te semble-t-il pertinent ?
 

Rocky75

Expert
Ton avis est plus que pertinent, cher ami, j'apprécie :)
J'ai bien pensé à la communication par mémoire partagée, mais comme il s'agit pour moi de faire dialoguer 2 applications sur 2 machines différentes de mon réseau local, j'ai abandonné cette option. Autant que je sache, la mémoire partagée ne peut fonctionner que sur une et même machine, n'est-ce pas?

Eric
 

zeb

Modérateur
Tu parles au départ de communication inter-processus (IPC).
Donc j'ai fait un petit tour de ce qui existe.

Pour des machines distinctes, le choix se restreint. Viendra ensuite peut-être d'autres restrictions dues au type de réseau, (local/global, hétérogène) pour ne laisser qu'une possibilité : les sockets.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 085
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut