我们有一个单片MFC GUI应用程序,它接近它在C++中的生命.我们计划在C#中构建新功能,并在每个应用程序之间传递数据.
问题是:在C++和C#之间传递数据的最佳方法是什么?
注意:
两端都有一个GUI前端,可能只需要传递像Id这样的简单数据,并且可能有一种机制,它向另一个应用程序指示要使用的进程/功能.
例如,其中一个应用程序将是C#中的CRM系统,当双击网格中的一行时,会传递customerId和一条消息,以在MFC应用程序的客户表单中打开该客户.
我做了一些研究,选项似乎是Windows Messaging,Memory Mapping,Named Pipes或类似Windows Sockets的东西.在这个阶段,我们倾向于命名管道,但真的很感激其他建议或提示或其他人的经验.
就个人而言,我一直在考虑使用像命名管道这样的东西,因为它们很容易在C++端使用,而.NET.Eystem.IO.Pipes也很容易使用.
如果你计划随着时间的推移替换应用程序的其他非.NET位,它也可能是最小阻力的路径.
拿你的选择:
档
命名管道< - 我的建议
共享内存
插座
COM
Windows消息
为什么命名管道?
为您提供免费的FIFO工作方式(如套接字,但不像共享内存)
可以轻松地双向沟通
所有平台都支持得很好
使用方便
可靠的数据传递和交付
可以阻止和阻止
无需删除即可读取数据(与套接字不同)
可以扩展为轻松包含第三个应用程序.
在.Net中只需使用System.IO.Pipes.
在C++中使用CreateNamedPipe和CreateFile.