0

在我们的项目中,我们有许多程序在计算机内部和内部网络上相互通信。为了解决这个问题,我们今天使用 COM/DCOM。然而,我们认为 DCOM 过于复杂。如何为每个版本的 Windows 配置安全设置更改。

因此,我们正在寻找一种协议,该协议能够使我们在不同 Windows 计算机上的不同程序之间进行通信,并且它的开销不如 DCOM。

这些程序是用 C++/MFC 和 C# 编写的

安全性并不那么重要,因为系统运行在与其他网络完全分离的小型本地网络上。

4

2 回答 2

4

如果您需要有保证的消息传递和事务支持 - 最好的选择是使用任何消息传递子系统。如果您完全确定您的所有系统都将在 Windows 机器上运行 - MSMQ 是您的选择。它可以从 Windows 组件设置中轻松安装。如果您希望某些节点在其他操作系统上工作 - 更多地了解 RabbitMQ。可以使用多种消息传递子系统,即 IBM MQ 或 Tibco Messaging。

正如上面提到的——我同意 MassTransit 可能是与 MSMQ 一起工作的一个不错的选择,但需要遵循一些初步的学习和架构方法。开源且免费使用。NServiceBus 是同样的野兽,可能更精致,但它不是免费使用的。对我来说非常昂贵。

如果您决定使用 RabbitMQ,请查看 EasyNetQ 包装器。

但是,如果您不需要应用程序之间的保证交付 - 为什么不使用 MVC4 使用 REST 服务。它的设置速度要快得多,您将能够轻松支持其他平台客户端,例如 iOS 或 Android 设备。

于 2013-12-16T09:56:54.367 回答
2

为什么不使用 NServiceBus 或 MassTransit?它们都可以使用 MSMQ 作为传输(在任何版本的 Windows 上都很容易启用)。

使用这样的工具(或使用您自己在 MSMQ 之上的包装器),您将能够通过发送消息和订阅消息自然地进行通信,这使得您的系统组件可以很好地解耦。

或者,您可以使用 RabbitMQ(如果您的目标是高端性能,甚至可以使用 ZeroMQ),它们都具有几乎所有流行编程语言的绑定,因此您的系统可能具有用不同语言编写的组件并在不同的操作系统上工作。

无论如何,当您考虑选项时,一定要看看 ZeroMQ :)

于 2013-12-16T09:44:03.373 回答