首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ RPC库建议

C++ RPC库建议
EN

Stack Overflow用户
提问于 2010-12-04 05:34:42
回答 8查看 13K关注 0票数 13

我正在寻找有关在C++中实现的RPC库的建议,供C++开发人员使用。

一些需求制约因素:

  • 应该同时在linux/unix和win32系统上工作。
  • 能够执行空闲函数和类方法
  • 希望是用现代的C++而不是90年代的java-esque C++写的。
  • 能够在网络和电源架构上工作。
  • 不太慢或效率不太低
  • 希望能为TR1风格的std::function等提供接口。

我的示例用法是在远程计算机上调用空闲函数foo。

代码语言:javascript
复制
---snip---
// foo translation unit
int foo(int i, int j)
{
   return i + j;
}
---snip---


---snip---
// client side main
int main()
{
   //register foo on client and server
   //setup necassary connections and states

   int result;

   if (RPCmechanism.invoke("foo",4,9,result))
      std::cout << "foo(4,9) = " result << std::endl;
   else
      std::cout << "failed to invoke foo(4,9)!" << std::endl;

   return 0;
}
---snip---

能够实现上述或类似目标的东西将是伟大的。

注意:我对其他语言绑定不感兴趣。请不要提供解决方案,因为它有其他语言绑定。我只对用C++为C++语言编写的设计良好的RPC框架感兴趣,这些框架是高效的,适合于C++场景的。

EN

回答 8

Stack Overflow用户

发布于 2010-12-05 01:42:29

这是相当多的要求..。

虽然没有见到所有这些人(因为我不确定是否有这样的野兽存在),但我建议大家注意,来自ZeroC。CORBA名声的Michi Henning (问问你在电信行业的朋友们,这真的不是个脏话)开发了ICE,如果它开始得晚一些,而不是由一个委员会开发的话,那么ICE就会是什么样子。

它们的C++映射是CORBA所不具备的,它使用STL类型,并且通常是更新的感觉。

它失败了免费函数和std::函数测试,但考虑到不太可能为整个列表找到一个产品,这对其余的许多人都做得很好。

祝好运

票数 8
EN

Stack Overflow用户

发布于 2011-01-01 03:32:02

我还对可行的C++ RPC实现感兴趣。经过一些研究后,我发现蚀刻、节约和协议缓冲是最有希望的解决方案,但它们实际上都不能满足我的所有需求。我的搜索标准是:

  1. 多语言,必须使用C++和PHP (C#、C#、Python、Perl )。
  2. 服务器只能在Linux上编译/运行(以为长期目标)。
  3. 客户端必须在和Linux (可能还有Mac)上运行
  4. 开放源码和商业友好型(即没有GPL)
  5. 它必须支持开箱即用加密。

候选人是:

  1. 阿帕奇蚀 优点:
代码语言:javascript
复制
- the C binding is based on the APR
- supports encryption
- runs on both platforms

缺点

代码语言:javascript
复制
- slow development
- lacks a PHP binding

  1. 阿帕奇 优点:
代码语言:javascript
复制
- small
- multiple language bindings

缺点:

代码语言:javascript
复制
- currently, it doesn't support encryption (under development, at least for the C++ binding)
- on Windows, it requires Cygwin

  1. 使用内部开发的RPC解决方案的协议缓冲区 优点:
代码语言:javascript
复制
- small
- multiple language bindings

缺点:

代码语言:javascript
复制
- no built-in RPC

目前,我正在评估使用APR为Protobuf开发RPC层的可能性。

然而,搜索仍在继续..。

编辑:通过使用Apache (C++版本)和protobuf进行序列化,我成功地解决了其中的一些问题,尽管它目前缺乏我需要的一些特性。

票数 7
EN

Stack Overflow用户

发布于 2010-12-04 14:00:40

像DCE-RPC,CORBA这样的老家伙,

或者协议缓冲器,或者节俭蚀刻

或者是像SOAP或REST这样的网络游戏。

你想要哪一个取决于你想做什么。例如:对于本地网络而言,快速高效的RPC需要一个轻量级的、二进制的RPC类协议缓冲区,而用于异构web服务的RPC则需要更详细的SOAP。

Google所有的内部RPC都使用PB,所以这是一个很好的选择。Facebook使用的是Thrift,所以它很难成为一个小玩家,而MS喜欢肥皂。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4352131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档