【问题标题】:With what shall we replace the DCOM communication with?我们应该用什么来代替 DCOM 通信?
【发布时间】:2011-10-30 14:37:25
【问题描述】:

我们目前有许多通过 DCOM 相互通信的 C++/MFC 应用程序。现在我们将更新应用程序,并希望用更现代、更易于使用的东西替换 DCOM。但我们不知道是什么。你怎么看

编辑

交换的数据不是其他人可能感兴趣的东西。它只是在不同计算机上运行的程序的不同部分之间的状态信息。

【问题讨论】:

  • 我认为没有比这更好的了。
  • 您仍然希望它们使用 C++ 还是打算重写它们?
  • 这是您正在处理的“瑞典核电站”代码吗?!我突然变得很害怕。
  • @gbjbaanb:MFC 仅适用于 EULA 明确禁止在核电站中使用的操作系统。
  • 哦,等等。它实际上在随 Java 一起提供的 Windows 版本中,因为 Sun 明确禁止这样做。 @gbjbaanb:事实证明,Java 是更糟糕的选择——所有版本都与原子不兼容(猜想这就是它在虚拟机上运行的原因;));)

标签: c++ com mfc dcom


【解决方案1】:

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

目前我听到了关于 ZeroMq 的好消息,这可能会给您带来比以往更多的好处。

【讨论】:

  • 请注意,Protocol Buffers 不是一个消息传递库,而是一种序列化机制。您仍然需要一个消息传递库来发送序列化的 protobuf 消息。我正在通过零 MQ 发送使用 protobuf 转码的消息。我推荐两者。
【解决方案2】:

DCOM 只不过是一个消息系统的糖衣。

任何适当的消息传递系统都可以,并且可以让您实际发现在哪里交换消息(这对于定位等待中的故障点/性能瓶颈可能很重要)。

现在有两种典型的方法:

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

【讨论】:

  • @magol,如果是用于核电站,我敦促你看看 DDS(数据分发服务),它是用于潜艇、军舰的那种东西等 PrismTech 提供商业实施,与他们取得联系。注意:我不为他们工作......
【解决方案3】:

我已经使用 REST 在 C++ 和 Java 中做了大量的应用程序,我非常满意。与 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 的美妙之处在于,如果您愿意,您甚至可以同时支持这两者以及其他表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 2010-12-06
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多