通过网络在应用程序之间进行通信
Communicate between applications over the network
在我们的项目中,我们有许多程序在计算机内部和内部网络上相互通信。为了解决这个问题,我们今天使用COM/DCOM。然而,我们认为DCOM太复杂了。如何为每个版本的Windows配置安全设置更改。
因此,我们正在寻找一种协议,该协议能够在不同Windows计算机上的不同程序之间进行通信,并且不会像DCOM那样有太多开销。
程序用C++/MFC和C#编写
安全性并不重要,因为系统运行在一个完全脱离其他网络的小型本地网络上。
如果您需要有保证的消息传递和事务支持,最好的选择是使用任何消息传递子系统。如果您完全确定您的所有系统都将在Windows计算机上运行-MSMQ是您的选择。它可以从Windows组件安装程序中轻松安装。如果您希望某些节点在其他操作系统上工作,请潜伏更多关于RabbitMQ的信息。可以使用各种消息传递子系统,即IBM MQ或Tibco消息传递。
如上所述,我同意MassTransit可能是使用MSMQ的一个很好的选择,但需要遵循一些初步的学习和体系结构方法。开源且免费使用。NServiceBus也是一样,可能更精致,但它不是免费使用的。对我来说很贵。
如果您决定使用RabbitMQ,请查看EasyNetQ包装器。
但是,如果您不需要保证应用程序之间的交付,为什么不使用MVC4使用REST服务呢。它的设置速度要快得多,您将能够轻松支持其他平台客户端,如iOS或Android设备。
为什么不使用NServiceBus或MassTransit?它们都可以使用MSMQ作为传输(在任何版本的Windows上都很容易启用)。
有了这样的工具(或者在MSMQ上使用自己的包装器),您将能够通过发送消息和订阅消息来自然地进行通信,这使您的系统组件很好地解耦。
或者,您可以使用RabbitMQ(如果您的目标是高端性能,甚至可以使用ZeroMQ),它们都绑定了几乎任何流行的编程语言,因此您的系统可能有用不同语言编写并在不同操作系统上工作的组件。
当你考虑以下选项时,一定要看看ZeroMQ:)
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- C++ 两台不同机器之间通过wifi进行套接字通信
- 线程之间的通信不起作用 - C++
- 通过USB在PC和Arduino之间进行串行通信
- 管理器类和对象类之间的通信
- 使用命名管道在 C# 和C++应用程序之间进行持续通信
- Python 3 套接字和 QTcpsocket (c++) 之间的通信失败
- 如何在嵌入式浏览器和Webside之间进行双向通信
- C++程序和未识别程序之间的双向通信
- 使用C++在同一系统上运行的 2 个服务之间进行通信
- C# 和C++应用程序之间的通信
- 如何在Qt WebChannel中以独立于平台的方式在HTML/Javascript和C++之间进行通信?
- 如何在 gtk+ c 中的回调之间进行通信
- Electron应用程序和Win32本机桌面应用程序之间的进程间通信
- 如何在线程之间进行通信和等效的waitforsingleobject()
- C++ 和 Simulink 之间通过 UDP 进行通信
- 在两个Windows QT5之间进行通信
- 覆盆子Pi(QT C )和Arduino(Arduino IDE)之间的通信
- Shell扩展窗口:最好的通信之间的ContextMenu和IconOverlay