我们应该用什么来替代DCOM通信?

8
我们目前有一些使用DCOM相互通信的C++/MFC应用程序。现在我们将会升级这些应用程序,并且想要替换DCOM成更加现代化、更易于使用的东西。但是我们不知道该选什么。你认为呢?
编辑:
交换的数据并不是可能对其他人感兴趣的内容。这只是在不同计算机上运行的程序不同部分之间的状态信息。

3
你正在开发的是关于“瑞典核电站”的代码吗?我突然感到有点害怕。 - MSalters
@MSalters - 你认为重新用Java重写会更好吗? - gbjbaanb
1
@gbjbaanb:MFC仅适用于其最终用户许可协议明确禁止在核电站中使用的操作系统。 - MSalters
@ MSalters - 现在我也有点担心。我在哪里可以阅读更多相关信息? - magol
1
哦,等等。实际上是在安装了Java的Windows版本中,因为Sun公司明确禁止这样做。@gbjbaanb:事实证明,Java是更糟糕的选择 - 所有版本都与原子不兼容(猜测这就是为什么它在虚拟机上运行的原因;) ;) - MSalters
显示剩余5条评论
3个回答

3

有许多 C++ 消息库,从旧的 ACE 到新的像 Google 的 Protocol Buffers 或 Facebook (现在是 Apache) 的 Thrift 或 Cisco 的 Etch

目前,我听说 ZeroMq 很不错,可能会给你更多你所需要的东西。


1
请注意,Protocol Buffers 不是一个消息传递库,而是一种序列化机制。您仍然需要一个消息传递库来发送序列化的 protobuf 消息。我正在使用 Zero MQ 发送使用 protobuf 转码的消息。我建议同时使用两者。 - RobH

2

DCOM不过是一个消息传递系统的糖衣包装。

任何一个合适的消息传递系统都可以,而且可以让你真正地发现消息交换的位置(这对于定位故障点/性能瓶颈很重要)。

现在有两种典型的方法:

  • 纯消息传递系统,例如使用Google Protocol Buffers作为交换格式
  • Web服务(可以是JSON格式的完整Web服务或REST API)

@magol,如果是针对核电站的话,我强烈建议你看看DDS(数据分发服务),这是潜艇、战舰等所使用的技术。PrismTech提供商业实现,请与他们联系。注意:我不为他们工作... - Nim

1

我一直在使用C++和Java编写REST应用程序,感觉非常满意。相比CORBA和SOAP的复杂性,REST易于实现且灵活。我花了一些时间来学习将事物建模为CRUD,但现在看来这种方式更加直观。

对于C++方面,我没有使用特定的REST库,只是使用cURL和XML解析器(在我的情况下是CPPDOM),因为C++应用程序仅作为客户端,而服务器是Java(使用Restlet框架)。如果您需要一个库,这里有另一个问题推荐:

Can anyone recommend a good C/C++ RESTful framework

我还想提到我使用XML的决定是任意的,我正在认真考虑将其替换为JSON。除非您有特定的XML需求,否则JSON更简单、更轻量级。而REST的美妙之处在于,如果您愿意,甚至可以同时支持两者以及其他表示形式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接