python - Windows XP 上的 VB6 COM 服务器与 Linux 上的 Python/D 之间通信的选项有哪些,不包括 .NET?

标签 python com vb6 rpc d

我有一个复杂而成熟的科学数据处理项目,它由一个主要用 VB6 编写的复杂的 COM 服务器网络组成,只使用很少的 UI(没有窗体或控件),因为到目前为止大多数普通用户都编写简短的 VBA 程序与它。

我们有两个 future 的目标:

  1. 通过 Linux 上的网络服务组件创建网络用户界面

  2. 逐渐将项目从 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),它允许在双方之间传递事件和消息。传输的数据量很小,高延迟并不重要。

    • DCOM/MSRPC 似乎可以进行本地通信,但在 Linux 部分真的很容易吗?到目前为止,我们使用 Python 的经验很少,并且在 D 中不支持它。
    • 自定义 IP 协议(protocol)。由于我们的需求很小,这可能会奏效。但这不是重新发明轮子吗?
    • 我们喜欢的想法JSON-RPC ,作为我们项目的一部分,我们已经使用 JSON,并且公开可用的 Python 客户端和 VB6 .

我想,我们的任务还有很多可行的解决方案。我们将为此聘请人员提供帮助,但在此之前,我们需要了解可用的技术以及在哪里(向谁)寻求帮助。

最佳答案

首先想到的是序列化协议(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/

相关文章:

python - 维基数据查询服务 - 获取页面的创建日期

python - Python win32com 可以在不弹出 GUI 的情况下使用 Visio(或任何程序)吗?

arrays - ReDim 保留 "Subscript Out of Range"

vb6 - 对象不提供自动化事件

SQL Azure : Executing SQL directly; no cursor

python - 在 SQLAlchemy 中,我可以从现有的 ODBC 连接创建引擎吗?

python - 您可以将 "stream"图像发送到 ffmpeg 以构建视频,而不是将它们保存到磁盘吗?

python - 实习不可变对象(immutable对象)

vba - VBA 中的 StringFromIID - 避免手动管理内存的好方法是什么?

c++ - 目标文件不包含应该存在的符号