2009-02-12 13 views

Répondre

7

Si la communication interprocess est toujours effectuée sur la même machine, les tubes nommés sont la solution, car ils sont plus rapides que les autres options. Cependant, s'il y a la moindre chance que cette communication se produise à travers les limites de la machine à un moment donné, utilisez l'approche socket. Pour C++, vous aurez besoin du fichier d'en-tête winsock2.h. En C#, utilisez l'espace de noms System.Net.Sockets. D'après mes souvenirs, il faudra un peu moins de code C++ si vous créez le serveur côté C++, puis utilisez la classe TcpClient côté C#.

0

Utilisez soit DCOM/RPC ou canaux nommés - tout le reste est soit précaire, aki, ou les deux.

1

Prises de courant et les canaux nommés sont deux options bien pris en charge dans les environnements gérés et non gérés.

2

Sockets sont probablement votre meilleur pari.

Avec prises votre Tied pas nécessairement aux deux programmes étant sur la même machine.

, il est également susceptible d'être la solution la plus portable (diable, Windows a même select() pour les sockets).

1

Il y a plusieurs façons de le faire, mais je pense que la meilleure façon serait d'utiliser WCF et COM +. Si vous hébergez un service dans COM +, vous pouvez y accéder via WCF dans votre service .NET et via les interfaces COM dans votre code non géré.

Vous pouvez consulter les sections suivantes de la documentation MSDN pour commencer:

Intégration de services WCF avec COM +: http://msdn.microsoft.com/en-us/library/bb735856.aspx

Intégration avec des applications COM + Présentation: http://msdn.microsoft.com/en-us/library/ms734723.aspx

0

Créez un objet COM Singleton. Gérez les données dans cet objet COM, qui peut être lu par les applications C++ et C#.

+0

comment une application C++ lire cet objet sans utiliser COM s'il vous plaît? –

0

Je dirais que Redis serait la meilleure solution pour tout type de communication entre

Questions connexes