我正在为新的硬件设备编写软件,我希望任何类型的新第三方应用程序都能够访问。
该软件将是一个本机进程(C ++),应由第三方游戏和想要支持硬件设备的应用程序进行轮询。这些第三方应用程序还应该能够在订阅的基础上从本机进程接收事件。因此,除了原生流程外,我还将为第三方开发人员提供“连接器”库,以便他们可以选择的所有平台/语言(Java,C ++,Python等)嵌入到他们的应用程序中,以便他们可以轻松连接几乎没有任何额外的代码需要由他们写的设备。我想针对所有台式机/笔记本电脑操作系统平台,并且非常清楚我想要公开哪些功能,但理想情况下我不想太过困难(即我希望它能够从客户端和服务器中优雅地扩展观点)。
我正在寻求未来的可靠性,性能,可维护性以及未来的跨平台/语言灵活性,以及按顺序开发的简易性。
我应该使用什么?
CORBA,MessagePack-RPC,Thrift还是其他什么东西?
(由于它的许可,我省略了ICE)
答案 0 :(得分:4)
Thrift或Message Pack是未来的最佳选择。两者都时尚,重量轻,不会给您的过程增加太多延迟。他们支持大多数常用语言,并且处于Active Development中。在目前阶段,我更喜欢个人节约,但消息包确实似乎承诺了很多功能。
思想节俭可能不像我们想要的那样友好,但人们在Windows上使用它。 这是Windows上节俭的入门指南。 http://wiki.apache.org/thrift/ThriftInstallationWin32 只有安装和获取Thrift编译器才能在Windows上遇到麻烦。使用生成的文件取决于您选择的语言,许多语言都支持通过导入thrift库来运行文件。 (Java很容易,MAVEN神器)
的RPC框架的讨论根据我的CORBA是老累赘和非常重量级。
答案 1 :(得分:2)
如果古代和重量级人物不会让你失望,绝对应该过时。无论如何,我可以告诉你我们最近在工作中使用的是Google Protocol Buffers,它们非常易于使用。
从开发人员的角度来看,您需要做的就是拥有GPB的构建(实际上并不困难),然后它将为您生成源文件。最终结果是跨平台二进制消息传输消息传递接口(想想XML和有限的RMI,而不是类似MPI的功能)。
我们在Windows上使用它与运行相同软件的基于Arm的Linux系统(嵌入式ARM的TS-7200)进行通信。据我所知,它与许多语言兼容。
答案 2 :(得分:1)
CORBA是目前唯一适用于我的系统的免费“RPC”,即使它的扩展非常糟糕。 Thrift还不是Windows友好的。 MessagePack-RPC在所有语言和操作系统中都不可用,即使它仍处于开发阶段。如果CORBA具有优雅的可扩展性,它可能根本就不会过时。
协议缓冲区和消息传递可以工作,我必须为每个平台/语言开发客户端和服务实现。它也可以扩展。我已经决定了。
答案 3 :(得分:0)
我目前正在使用Apache Thrift进行医院经理项目。它在许多领域比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。对于您的项目,我认为支持多种语言是关键。