在我们的项目中,我们有许多程序可以在计算机内部和内部网络上相互通信。为了解决这个问题,我们今天使用COM / DCOM。 但是,我们认为DCOM太复杂了。如何为每个Windows版本配置安全设置更改。
因此,我们正在寻找一种协议,该协议支持不同Windows计算机上不同程序之间的通信,并且没有DCOM那么多的开销。
程序是用C ++ / MFC和C#
编写的安全性并不重要,因为系统在完全脱离其他网络的小型本地网络上运行。
答案 0 :(得分:4)
如果您需要有保证的消息传递和事务支持 - 最好的选择是使用任何消息传递子系统。如果您完全确定所有系统都将在Windows机器上运行 - 您可以选择MSMQ。它可以从Windows组件设置轻松安装。 如果您希望某些节点在其他操作系统上运行 - 更多关于RabbitMQ的信息。 可以使用各种消息传递子系统,即IBM MQ或Tibco Messaging。
如上所述 - 我同意MassTransit可能是与MSMQ合作的好选择,但需要遵循一些初步的学习和架构方法。开源并免费使用。 NServiceBus是同样的野兽,可能更加精致,但它不能免费使用。对我来说非常昂贵。
如果您决定使用RabbitMQ,请查看EasyNetQ包装器。
但是,如果您不需要在应用程序之间保证交付 - 为什么不使用MVC4使用REST服务。设置起来要快得多,您将能够轻松支持其他平台客户端,如iOS或Android设备。
答案 1 :(得分:2)
为什么不使用NServiceBus或MassTransit? 它们都可以使用MSMQ作为传输(在任何版本的Windows上都很容易启用)。
使用这样的工具(或者在MSMQ上使用自己的包装器),您将能够通过发送消息和订阅消息自然地进行通信,这使您的系统组件很好地解耦。
或者你可以使用像RabbitMQ这样的东西(如果你的目标是高端性能,甚至可以使用ZeroMQ),它们都具有几乎任何流行编程语言的绑定,因此你的系统可能有不同语言编写的组件并且可以在不同的操作系统上工作
当你考虑选项时,绝对要看看ZeroMQ:)