2009-12-21 9 views
2

J'ai un service Windows (implémenté en C#) et j'ai quelque chose comme un gestionnaire de contrôle de service. Je voudrais suivre les messages du service au gestionnaire de contrôle de service (qui est une application de formulaire de fenêtre), mais je ne suis pas sûr de la meilleure façon de le faire. Le service doit diffuser les messages à tous les clients qui lisent de manière non bloquante. J'ai envisagé d'utiliser des canaux nommés ou des mailslots, mais je ne suis pas sûr s'il y a une meilleure façon de le faire (je ne suis pas sûr si je peux implémenter la diffusion avec cette technologie).Interprocess Communication/Broadcast

Tout conseil serait grandement apprécié.

Répondre

0

S'il y a plusieurs clients qui écoutent, je pense que les tubes nommés seraient un peu plus de travail. Je pense que la mémoire partagée serait plus simple pour cette situation. Si les clients peuvent être sur une machine distincte, quelque chose comme la multidiffusion peut être un moyen simple de transmettre l'information s'il n'y a pas beaucoup de données impliquées. Cependant, la plage de multidiffusion est généralement limitée à un seul sous-réseau, sauf si les routeurs sont spécifiquement configurés pour la multidiffusion.

+0

Merci pour la réponse. Les clients sont tous sur la même machine, donc je voudrais éviter d'impliquer la pile réseau. La mémoire partagée sonne comme une option. Mais je blesse s'il est aussi possible d'utiliser des messages Windows pour cela (bien qu'ils semblent un peu lourd à utiliser en C#) – Jeldrik

+0

Je suis d'accord avec votre évaluation d'éviter le réseau dans ce cas. Une autre possibilité qui pourrait être plus flexible en particulier pour les futures mises à jour serait d'utiliser .Net Remoting (http://msdn.microsoft.com/en-us/library/kwdt6w2k(VS.71).aspx). C'est probablement la façon "officiellement" correcte de le faire. –

Questions connexes