Interprocess Communication Between C# application and unmanaged C++ application

前端 未结 8 2226
感动是毒
感动是毒 2021-01-05 15:20

I have two Windows services, the first one written in C# and the second written in unmanaged C++, I want to know how can I do two-way interprocess communication.

相关标签:
8条回答
  • Sockets and Named Pipes are two options well supported in the managed and unmanaged environments.

    0 讨论(0)
  • 2021-01-05 15:34

    Create a Singleton COM object. Maintain data in this COM object, which can be read by both C++ and C# applications.

    0 讨论(0)
  • 2021-01-05 15:37

    If the interprocess communication is always going to be done on the same machine, named pipes is the way to go because they are faster than other options.

    However, if there is even the slightest chance that this communication might occur across machine boundaries at some point, go with the socket approach. For C++, you'll need the winsock2.h header file. In C#, use the System.Net.Sockets namespace.

    It's been a while since I've done unmanaged C++, but my recollection is that you'll have to write less C++ code if you create the server on the C++ side and then use the TcpClient class on the C# side.

    0 讨论(0)
  • 2021-01-05 15:37

    There are a number of ways to do this, but I think that the best way would be to use WCF and COM+. If you host a service in COM+, you can access it through WCF in your .NET service, and through COM interfaces in your unmanaged code.

    You might want to check out the following sections of the MSDN documentation to get started:

    Integrating WCF Services with COM+: http://msdn.microsoft.com/en-us/library/bb735856.aspx

    Integrating with COM+ Applications Overview: http://msdn.microsoft.com/en-us/library/ms734723.aspx

    0 讨论(0)
  • 2021-01-05 15:41

    Sockets are probably your best bet.

    With sockets your not necessarily tied to both programs being on the same machine.

    Also, it's likely to be the most portable option (heck, Windows even has select() for sockets).

    0 讨论(0)
  • 2021-01-05 15:41

    Use either DCOM/RPC or named pipes - anything else is either insecure, hacky, or both.

    0 讨论(0)
提交回复
热议问题