【发布时间】:2015-09-03 18:44:47
【问题描述】:
如标题所述 - 目前我有两个应用程序。一种是 .NET、winforms,第二种是原生 C++。两者一起工作并且必须通信(C++ 到 .NET 和 .NET 到 C++),.NET 应用程序是从 C++ 应用程序启动的。目前,通信是通过将数据写入文件并发送 postmessage 通知 C++ 应用程序数据已写入来完成的。虽然它有效,但我认为这不是最好的方法。因此,我想问你,你会推荐什么作为最好的方法。我正在考虑围绕 .NET 编写一个 CLI 包装器以将其绑定到 C++ 中。与将数据写入文件相比,使用此类包装器有什么缺点吗?
--------更新--------
我忘了补充一点,两个应用程序总是在同一台机器上运行。该解决方案应适用于 Windows xp、win7、win8
-------结论------
非常感谢您的回答,所有这些都非常有帮助。关于进程间通信技术之间差异的良好概述呈现了 Furkan Omay 的答案中提供的网站 - offically supported Inter-Process Communications methods on Microsoft Windows。 但是,像 McAfee 的 web site 这样的防病毒程序似乎存在问题。在某些情况下,这可能是一个大问题。 根据使用 C++/Cli,我喜欢 Drax 的回答,谢谢。我也没有看到使用包装器的任何缺点。一个很好的教程是here。
【问题讨论】:
-
为此使用网络 API 怎么样?例如本地 TCP/IP 连接。
-
网络 + protobuf 例如github.com/google/protobuf
-
命名管道也能正常工作。
-
我不认为 Window 的消息是一种糟糕的交流方式。您在文件中存储了多少数据?如果少量,使用 WM_COPYDATA 消息 (msdn.microsoft.com/en-us/library/windows/desktop/…) 并避免文件 I/O 怎么样?
-
另一种方法是使用 COM,但这对你来说可能是多余的