我正在寻找有关在C++中实现的RPC库的建议,供C++开发人员使用。
一些需求制约因素:
我的示例用法是在远程计算机上调用空闲函数foo。
---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++场景的。
发布于 2010-12-05 01:42:29
这是相当多的要求..。
虽然没有见到所有这些人(因为我不确定是否有这样的野兽存在),但我建议大家注意,冰来自ZeroC。CORBA名声的Michi Henning (问问你在电信行业的朋友们,这真的不是个脏话)开发了ICE,如果它开始得晚一些,而不是由一个委员会开发的话,那么ICE就会是什么样子。
它们的C++映射是CORBA所不具备的,它使用STL类型,并且通常是更新的感觉。
它失败了免费函数和std::函数测试,但考虑到不太可能为整个列表找到一个产品,这对其余的许多人都做得很好。
祝好运
发布于 2011-01-01 03:32:02
我还对可行的C++ RPC实现感兴趣。经过一些研究后,我发现蚀刻、节约和协议缓冲是最有希望的解决方案,但它们实际上都不能满足我的所有需求。我的搜索标准是:
候选人是:
- the C binding is based on the APR
- supports encryption
- runs on both platforms缺点
- slow development
- lacks a PHP binding
- small
- multiple language bindings缺点:
- currently, it doesn't support encryption (under development, at least for the C++ binding)
- on Windows, it requires Cygwin
- small
- multiple language bindings缺点:
- no built-in RPC
目前,我正在评估使用APR为Protobuf开发RPC层的可能性。
然而,搜索仍在继续..。
编辑:通过使用Apache (C++版本)和protobuf进行序列化,我成功地解决了其中的一些问题,尽管它目前缺乏我需要的一些特性。
发布于 2010-12-04 14:00:40
像DCE-RPC,CORBA这样的老家伙,
或者协议缓冲器,或者节俭,蚀刻,
或者是像SOAP或REST这样的网络游戏。
你想要哪一个取决于你想做什么。例如:对于本地网络而言,快速高效的RPC需要一个轻量级的、二进制的RPC类协议缓冲区,而用于异构web服务的RPC则需要更详细的SOAP。
Google所有的内部RPC都使用PB,所以这是一个很好的选择。Facebook使用的是Thrift,所以它很难成为一个小玩家,而MS喜欢肥皂。
https://stackoverflow.com/questions/4352131
复制相似问题