【问题标题】:.NET process to Borland C++ process communication.NET 进程到 Borland C++ 进程的通信
【发布时间】:2014-01-25 20:32:46
【问题描述】:

早在 1999 年就启动了一个需要两个进程之间进行通信的项目;一个是 VB6 应用程序,另一个是 Borland C++ 进程。 VB6 被设计为 COM ActiveX 服务器 EXE(进程外)应用程序,Borland C++ 应用程序将实例化 VB6 COM 服务器并访问 VB6 COM 服务器的方法和属性。在过去的 14 年中,这一直为我们提供了良好的服务,并且非常可靠;请注意,这两个进程都在同一台服务器上运行,但我们设计的进程只有在需要时才能在本地网络上的不同 Windows 系统上运行。

基本上,Borland C++ 应用程序可以从几个方法请求数据并获得响应,并且有一个由 VB6 COM 服务器触发的事件,它向 Borland C++ 进程发送 BSTR,它必须作为事件接收 - 这些每 100 毫秒发送一次,BSTR 大小在 250 到 2500 字节之间。

我需要开始考虑如何最好地用更新的 - 可能是 C# .NET 应用程序替换 VB6 ActiveX COM EXE 服务器。我与 Borland C++ 进程的开发人员有很好的接触和沟通,因此如果需要,也可以很容易地改变等式的一侧。

Borland C++ 开发人员使用的是相当旧的版本 - 我相信是 Borland 7?至少这比 VB6 更新很多,而且我不得不假设他至少在可预见的未来不会升级。

以下是当前的一些设计决策:我们不需要持久性或消息可靠性,如果消息丢失也没关系(他可以执行另一个请求或在从 COM 服务器向 Borland 触发事件的情况下)客户端 100 毫秒后的下一条消息就可以了)。两个进程都不能影响另一个进程——这就是我们选择 COM EXE 进程外服务器的原因。 Borland C++ 客户端不会考虑任何类型的进程内,甚至是 DLL 包装器。

这是我对未来的考虑:

  1. 使用 VS2012 C++ 的 ATL COM EXE 服务器,完全复制旧的 VB6 COM EXE 服务器;我真的希望摆脱 COM 的复杂性,转而使用一种新的、非常简单的处理通信的方法来处理通信。 (我不觉得这是在向前发展,而且维护、调试和添加新功能听起来也很糟糕?)如果我完全正确的话,Advantage Borland C++ 客户端不需要更改任何内容。

  2. ZeroMQ 我已经编写了其他几个使用它的 C# 应用程序,我真的很喜欢它 - 但我不知道是否有适用于 Borland C++ 的 ZeroMQ 客户端(Borland C++ 开发人员可以只使用 C/C++ ZeroMQ 库吗? ?)

  3. Redis - 我已经使用 Pub/Sub 编写了两个运行良好的 C# 应用程序,我真的很喜欢这个 - 有几个问题会出现适用于 Windows 7/8 的 Redis 的“生产”版本,我能找到吗Borland C++ 的 Redis 客户端,有吗?

  4. ? - 就上述选择或更好的选择寻求建议?

谢谢

对问题的主要编辑:如果您正在启动一个全新的 C# .net 应用程序和一个全新的 Borland C++ 应用程序,并且这两个应用程序需要在 Windows 7/8/9 上运行并且它们必须能够将数据发送到彼此 - 你会使用什么技术来处理通信?

谢谢 尼尔戴维斯

【问题讨论】:

    标签: c# c++ com vb6 c++builder


    【解决方案1】:

    C# 在隐藏 COM 复杂性方面的表现几乎与 VB6 一样出色。因此,在 C# 中实现相同的 COM 接口应该可以在更短的时间内获得 #1 的优势。

    【讨论】:

    • 我一直在探索这种可能性,但据我了解,从技术上讲,C# 不能用于执行 COM EXE(进程外)服务器。我是正确的还是误解?我还有另一个问题,我试图在 SO 上发布一个 C# COM EXE,它是否可以正常工作,除非我无法接收它在 C++ 客户端中触发的事件,请参阅我的另一个问题,标题为 CSComExeServer - 谢谢。
    • @David:我想他知道这一点,因为他刚刚评论说他问了一个问题。
    • 来自上面的评论:据我了解,C# 不能用于做 COM EXE(进程外)服务器
    • @David:这是他的结论,因为他尝试过,但无法让 C# 触发的事件在 COM 客户端中触发
    猜你喜欢
    • 2010-09-08
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多