J'ai deux services Windows, le premier écrit en C# et le second écrit en C++ non géré , je veux savoir comment faire une communication interprocessus bidirectionnelle.Communication interprocessus entre l'application C# et l'application C++ non gérée
Répondre
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#.
Utilisez soit DCOM/RPC ou canaux nommés - tout le reste est soit précaire, aki, ou les deux.
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.
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).
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
I dirait les sockets et un système de messagerie. Consultez notre pour Google Protocol Buffers.
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#.
Je dirais que Redis serait la meilleure solution pour tout type de communication entre
- 1. Communication interprocessus sous Windows
- 2. Communication entre applications AIR (Flex) et C++
- 3. Communication interprocessus entre applications 32 et 64 bits sous Windows x64
- 4. exposer une bibliothèque de classe C++ non gérée à C#
- 5. Chaîne cryptée C++ non gérée en octets C# [
- 6. Mémoire non gérée et mémoire gérée
- 7. Problème de communication entre Java et C++ application sur stdin
- 8. Communication sécurisée entre un client C# et un serveur PHP
- 9. Interop entre C++ et C#
- 10. Bibliothèques C++ non gérées - différences entre VS2005 et VS2008?
- 11. Classe non enregistrée .... lorsque j'essaie d'appeler une bibliothèque C# gérée à partir d'un C++ non géré
- 12. C#: SerialPort communication
- 13. Communication RDP via C/C++
- 14. étrange exception non gérée
- 15. Communication interprocessus en PHP avec un processus continu?
- 16. Est-il possible de partager une déclaration enum entre C# et C++ non managé?
- 17. Valeur synchronisée entre C# et C++?
- 18. Communication entre les contrôles utilisateur sur la page - C#/ASP.NET
- 19. Nommage de méthode C++ gérée
- 20. Exception non gérée dans Windows
- 21. Conversion entre les types gérés et non gérés en C++?
- 22. Portée et communication entre les objets
- 23. Utilisation de la DLL C++ gérée à partir de C#
- 24. asp.net exception non gérée
- 25. Expression naine non gérée
- 26. Communication entre AS3 et le serveur MySQL
- 27. Communication sécurisée entre script Flash et PHP
- 28. Code de communication entre PHP et AS2?
- 29. Interaction entre Java et C#
- 30. Communication entre applications intranet
comment une application C++ lire cet objet sans utiliser COM s'il vous plaît? –