2010-10-18 25 views
5

Je suis à la recherche d'un projet qui nécessitera une communication entre processus entre une application Windows héritée utilisant des canaux nommés et un nouveau service s'exécutant sur un serveur Linux. L'application Windows ne peut pas être modifiée. Est-ce que quelqu'un sait s'il existe une bibliothèque Linux disponible qui prend en charge les canaux nommés Windows? Ou encore mieux, quelqu'un peut-il recommander une bibliothèque qu'ils ont utilisée à cette fin?Prise en charge de tubes nommés Windows sous Linux

+0

Un tuyau est un système de communication local, il ne s'étend pas aux réseaux ... comment un système Linux devrait-il avoir accès à un tuyau sur un système Windows, qui par définition doit être un système différent (même un VM)? Ou voulez-vous savoir comment écrire un proxy ou quelque chose comme ça? – DarkDust

+3

@DarkDust: les canaux nommés Windows sont exportés sur l'espace de noms du réseau. Vous pouvez en ouvrir un à partir d'un autre ordinateur Windows avec les attributs de sécurité corrects et ajouter le nom du canal au nom WINS. –

+0

Les tubes nommés Windows fonctionnent différemment des tubes Linux standard et fonctionnent sur un réseau. Je demande si quelqu'un a écrit une bibliothèque sous Linux pour prendre en charge les canaux nommés Windows. – MichaelB76

Répondre

12

Les tubes nommés Windows et Linux sont des animaux différents. Si une solution interop existe, vous allez faire partie d'une très petite population d'utilisateurs.

Il est peut-être préférable d'écrire un proxy du côté Windows pour mapper entre Pipe et socket nommés, et de le connecter à un socket sur le côté Linux. Cela vous fournit une interface réseau utile sur le côté Linux à l'avenir, et supprime ce qui pourrait être un monde de Named Pipes interop blessé de l'image. Si je faisais cela, j'essaierais de produire un simple proxy passthrough en C# (code managé) comme preuve de concept. Peut toujours convertir en code natif (Win32/C++) si le débit ne se mesure pas. Il y a un exemple de code C# here qui pourrait être une référence utile.

Voici background on the nuances of Windows vs Linux named pipes.

+0

Merci. l'idée d'écrire un proxy sur le côté Windows m'était venue à l'esprit, mais je suis réticent à l'idée d'installer quoi que ce soit sur le serveur Windows ... – MichaelB76

+1

@ MichaelB76 - comme c'est frustrant ... j'espère qu'une présentation bien argumentée de les risques et les coûts en essayant de faire NP interop peuvent balancer l'argument pour vous. Quel est le système d'exploitation Windows? Une machine, ou plusieurs? –

3

Je parie que Samba/Winbind contient du code très pertinent. Je ne sais pas à quel point il est réutilisable.

+1

Je pense que la suite Samba contient quelque chose d'utile; Je ne sais pas comment l'utiliser. Certains des outils Samba doivent se connecter en interne aux canaux nommés NT. – MarkR

+0

Merci, pensée intéressante. – MichaelB76