6

我正在为一种新的硬件设备编写软件,我希望任何一种新的第三方应用程序都能够访问,如果他们愿意的话。

该软件将是一个本机进程 (C++),应该可以被想要支持硬件设备的 3rd 方游戏和应用程序轮询。这些第 3 方应用程序还应该能够在订阅的基础上接收来自本机进程的事件。因此,除了本机进程之外,我还将为第 3 方开发人员提供“连接器”库,用于他们可能选择的所有平台/语言(Java、C++、Python 等)嵌入到他们的应用程序中,以便他们可以轻松连接到设备几乎不需要他们编写任何额外的代码。我想针对所有台式机/笔记本电脑操作系统平台,并且对我想要公开的功能有一个很好的了解,但理想情况下我不想太卡住(即我希望它可以从客户端和服务器优雅地扩展观点)。

我正在寻找未来的可靠性、性能、可维护性和跨平台/语言的灵活性,以及​​易于开发,按此顺序。

我应该使用什么?

CORBA、MessagePack-RPC、Thrift 还是其他什么?

(由于它的许可,我省略了 ICE)

4

4 回答 4

4

Thrift 或 Message Pack 是未来的最佳选择。两者都很时尚,重量轻,不会给您的流程增加太多延迟。它们支持大多数常用语言,并且处于主动开发中。在当前阶段,我个人更喜欢节俭,但消息包似乎确实承诺了很多功能。

思想节俭可能不像我们想要的那样对 Windows 友好,但人们正在 Windows 上使用它。这是 Windows 上节俭的入门指南。 http://wiki.apache.org/thrift/ThriftInstallationWin32 只有在 Windows 上安装和获取 Thrift 编译器会很麻烦。使用生成的文件取决于您选择的语言,并且许多语言都很好地支持通过导入 thrift 库来运行文件。(Java很容易,MAVEN神器)

在 RPC frameworks available 上讨论了可用的RPC 框架?

在我看来,CORBA 是旧的笨重且非常重量级的。

于 2010-09-12T10:06:17.020 回答
2

如果古代和重量级不让你失望,过时绝对应该。无论如何,我可以告诉你我们最近在工作中一直在使用 Google Protocol Buffers,它们非常易于使用。

从开发人员的角度来看,您需要做的就是构建 GPB(这实际上并不难),然后它会为您生成源文件。最终结果是一个跨平台的二进制消息传输消息传递接口(想想 XML 和有限的 RMI,而不是类似 MPI 的功能)。

我们在 Windows 上使用它与运行相同软件的基于 Arm 的 Linux 系统(来自嵌入式 arm 的 TS-7200)通信。据我所知,它与许多语言兼容。

于 2010-08-26T12:41:26.383 回答
1

CORBA 是目前唯一适用于我的系统的免费“RPC”东西,尽管它的扩展性非常糟糕。Thrift 还不是 Windows 友好的。MessagePack-RPC 还没有在所有语言和操作系统中可用,尽管它仍在开发中。如果 CORBA 具有优雅的可扩展性,它可能根本就不会过时。

协议缓冲区和消息传递将起作用,我必须为每个平台/语言开发一个客户端和服务实现。它也将是非常可扩展的。我已经决定了。

于 2010-08-27T16:55:33.683 回答
0

我目前正在将 Apache Thrift 用于 Hospital Manager 项目。它在许多方面都优于 CORBA,更不用说它是轻量级的,而且更容易实现和理解。与 CORBA 相比,Thrift 的学习曲线绝对是微妙的,但 Thrift 的文档是最糟糕的。

我正在使用 Obj-C 和 Java 客户端连接的 Ruby Thrift 服务器。Thrift 解析器或“编译器”可以很好地为您想要的语言生成源文件,尽管它过于冗长。如果我开始一个新项目,我肯定会考虑实施 Thrift 或 Google ProtoBuffs,因为 CORBA 确实已经过时,并且将来可能不会实施新技术,更不用说针对 CORBA 的许多漏洞和利用不会得到补丁,因为它不再处于开发状态,这会给你的新项目带来一些严重的安全漏洞。

Thrift 支持多种编程语言:截至撰写本文时,C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Objective-C、JavaScript、Node.js、Smalltalk、OCaml 和 Delphi。我认为,对于您的项目而言,支持多种语言是关键。

于 2013-11-21T13:50:36.160 回答