需要帮助设计进程间通信层

时间:2010-06-21 17:43:43

标签: c# c++ sockets communication pipe

我的系统中有几个需要相互通信的过程。

某些进程需要每秒传递数据块60次, 有些是非常零星的。

大多数进程都在C#中,一个是C ++。

所有在同一台Windows 7机器上运行。

现在每个进程都有自己不同的通信实现(管道,事件和套接字)。 我想要统一到一个通信层。

  • 你会如何实现这个?
  • 也许用预期的接收器作为标题进行某种广播?
  • 您会选择哪种流程沟通方式?

谢谢,

SW

4 个答案:

答案 0 :(得分:1)

我正在使用WCF服务在.Net进程和.Net与Java进程之间进行通信。我发现WCF是实现这一目的的一种非常简单的方法。

答案 1 :(得分:1)

看看MSMQ。它基于套接字,速度非常快。本文介绍如何在C ++中使用它:http://msdn.microsoft.com/en-us/library/ms811055.aspx

您也没有提到您的通信是同步还是异步(作者是否必须等待读者的响应?)。你有多位作家和读者吗?它是一个恒定的60Hz还是它有一个带有呼吸空间的束,读者可以赶上作家?

数据库表也可以用作队列,并且具有在系统崩溃时保留消息的优点。像Sqlite这样的低开销嵌入式引擎非常适合这种情况。

答案 2 :(得分:1)

我建议使用ICE,它支持远程对象和消息传递。满足您的费率和带宽需求是没有问题的。它也是跨平台的,支持C#或C ++以外的语言,为其他组件提供更多语言选择。

答案 3 :(得分:0)

请注意,消息传递中间件解决方案(如WCF和ICE)是强大的引擎,为您提供可靠的消息传递,消息排序控制,分布式(多机)功能等功能。

它们也相对复杂,可能涉及一定程度的“框架”学习。

如果您的应用程序目前可靠地运行,那么最初可能会介绍您为下一个新功能选择的任何消息传递解决方案并首先在那里进行验证。然后,您可以在必要时对现有流程(如果......)进行改造。