我有一个复杂而成熟的科学数据处理项目,它由一个主要用 VB6 编写的复杂的 COM 服务器网络组成,只使用很少的 UI(没有窗体或控件),因为到目前为止大多数普通用户都编写简短的 VBA 程序与它。
我们有两个 future 的目标:
通过 Linux 上的网络服务组件创建网络用户界面。
逐渐将项目从 Windows 和 VB6 迁移到 D/Python。
我们正处于设计消息传递框架的阶段,该框架将作为这两个目标的最佳共同提名人。
这些项目执行繁重的数字处理任务,包括运行自定义 R 脚本和 LaTeX/MS Word/Excel 报告。我们需要向广泛的客户公开一些功能,而 Web UI 似乎是最佳选择。另一方面,随着 Windows 在我们环境中的使用逐渐减少,我们希望最终将我们的项目移植到 Linux,或者至少保持该选项开放而不是将自己锁定在特定于 Windows 的技术中。
从这个角度来看,自然的基于 .NET 的解决方案是 这是我们首先要避免的。
从 VB6 的角度来看,DCOM/MSRPC 似乎很自然,但这种技术已过时且不安全。此外,我们希望在 Linux 上保留项目的 Web 服务部分。
所以最好的选择是在 Linux 上编写网络服务部分(例如使用 Python 或 D)。问题仍然存在:如何有效地在 VB6 和 Python(或 D)之间进行通信。很明显,它将是某种网络协议(protocol)。我们需要的是高效且易于使用的协议(protocol),它允许在双方之间传递事件和消息。传输的数据量很小,高延迟并不重要。
我想,我们的任务还有很多可行的解决方案。我们将为此聘请人员提供帮助,但在此之前,我们需要了解可用的技术以及在哪里(向谁)寻求帮助。
最佳答案
首先想到的是序列化协议(protocol),如 Google Protocol Buffers、Thrift、MessagePack、Avro 等。这些协议(protocol)非常流行,其中一个必须已经在 VB6 中实现。据我所知,除了 Avro 之外,所有的都在 D 中实现,因此您可能没有多少选择,具体取决于 VB6 世界中的情况。 我的建议是选择其中之一并使用它,或者如果 VB6 有 REST 支持,那么也许 VibeD在 Linux 端可以为您完成这项工作。
关于python - Windows XP 上的 VB6 COM 服务器与 Linux 上的 Python/D 之间通信的选项有哪些,不包括 .NET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937521/