C跨平台RPC需要最少的样板?

时间:2014-04-17 05:04:03

标签: c linux windows rpc

我在C中有一个现有的库,我希望能够允许远程访问(从Linux或Windows)。

我查看了常见的RPC嫌疑人,如Thrift和Protobuf,但这些都没有干净地处理C风格的函数调用(像pass-by-ref,char *而不是string,*而不是List<>等等) )。

简而言之,要使用其中任何一个,我看起来需要从头开始编写完整的IDL,并添加许多样板代码以将C风格的函数调用传输到这些环境中。

是否有任何RPC库

  • 可以直接处理C头文件(或者有自动工具 从C定义生成初始IDL)?
  • 是跨平台的Linux / Windows兼容吗?
  • 要求绝对最小的样板代码吗?
  • 支持套接字
  • 是相对较高的性能(XML-RPC我看着你)?

1 个答案:

答案 0 :(得分:1)

嗯,有protobuf-c,是C语言中protobuf的实现。

然后是大多数/(所有?)unix类系统中的经典XDR,也存在用于windows的版本。另请参阅包含API概述的Linux xdr(3) man page

请注意,protobuf和XDR都是序列化库,它们不提供RPC。 XDR的“伴随RPC库”被称为RPC,但是我不认为有人用这个编写新代码,而AFAICS是特定于unix的(portmap不在windows上运行,是吗?无论如何,这通常是一个坏主意。)然后是protobuf-c-rpc,这是protobuf RPC库的C版本;可能比经典RPC更好的选择。