2012-04-28 2 views
0

Je cherche un moyen efficace de gérer la communication plusieurs-à-plusieurs entre plusieurs processus s'exécutant sur ma machine.Communication interprocessus many-to-many, sans concentrateur central

Mes exigences seraient:

  • Pas moyeu central (par exemple, aucun processus central qui achemine les messages)
  • Tous les processus doivent être en mesure d'envoyer un message
  • Tous les processus sont informés lorsque un nouveau message (de n'importe quel autre processus) est disponible

Je préférerais une solution basée sur des canaux nommés (par exemple, une solution basée sur un système de fichiers).

+0

Pourquoi n'avez-vous pas besoin de concentrateur central? Qu'est-ce que vous essayez de faire exactement? Pourquoi préfères-tu les pipes nommées? – svick

+0

Les deux sont des demandes des clients, en fait .. L'absence d'un hub central est motivée par une robustesse accrue – Andrea

Répondre

2

Vous pouvez essayer d'utiliser Windows Communication Foundation (WCF) avec la liaison d'égal à égal (NetPeerTcpBinding). Vous pouvez essentiellement créer un bus de messages décentralisé sur celui-ci. C'est basé sur TCP, mais c'est assez rapide quand il est sur le même ordinateur, donc il est adapté à la communication interprocessus (bien que les tubes techniquement nommés puissent atteindre un débit plus rapide et une meilleure latence, mais seulement pour les applications extrêmement sensibles aux performances).

Lire "Peer-to-Peer Programming with WCF" pour une introduction au sujet.

+0

Merci pour votre réponse! J'ai regardé la documentation, ça a l'air bien. Maintenant, j'aurais besoin de mettre en œuvre mon résolveur personnalisé (pour garder le nœud en recherche dans la machine locale et accélérer la découverte du réseau complet). Avez-vous des ressources pour cela? – Andrea

+0

@Andrea: Désolé, non. Je n'ai pas encore utilisé NetPeerTecpBinding. –

Questions connexes