【问题标题】:RPC interface that works on Windows as well as Linux?适用于 Windows 和 Linux 的 RPC 接口?
【发布时间】:2014-11-27 21:55:34
【问题描述】:

我需要编写一些 C/C++ 代码以移植到 Windows 和 Linux,使用 RPC(仅在同一主机上的进程之间,而不是跨网络,因此不需要跨平台调用)。

Windows 有 MSRPC,Linux 有 Sun-RPC,但它们在编写 RPC 调用和方法方面不兼容,甚至在部署 RPC 服务的方式方面也不兼容。

有人对如何解决这个问题有任何聪明的想法吗?

【问题讨论】:

  • #if defined(WIN32) ... #elif defined(__LINUX__) ... #else ... #endif
  • boost.interprocess 存在。我从未尝试过。
  • boost.interprocess 非常低级。我希望在 IDL 级别有更多的东西,您可以在其中以自然的方式声明和调用过程。启用了rpcgen 之类的东西。我看到有一个 rpcgen 到 Windows 的端口,但它很旧并且没有维护。

标签: c++ linux windows rpc


【解决方案1】:

你有没有考虑过一些JSONRPCJSON是一个文本serialization格式,而JSONRPC是它上面的一个RPC机制)?或者CORBA - 这是Common Object Request Broker Archtecture,一个广泛使用的面向对象RPC的标准?

或者可能是POCO libraries? POCO 是 C++ 中的跨平台(Posix 和 Windows)框架和库,它包括网络、进程和 IPC 设施。 Qt 跨平台工具包还有一个核心层,提供QtNetwork(用于网络套接字)和QProcess(用于管理进程)。

【讨论】:

  • 我改进了我的答案,但我不同意 Wim Ombelets 的上述评论。我提供的链接被广泛使用且稳定(而且我提供的名称可在谷歌上搜索)。解释一个广泛使用的库的描述并没有带来任何新的东西。而且问题本身确实(明智地)只提供了 MSRPCSun-RPC 的链接 - 没有解释
【解决方案2】:

您可以考虑使用qjsonrpc。它是在 Qt 库之上开发的库,提供易于使用的 jsonrpc 支持。它同时提供客户端和服务器,并在 linux/osx/windows 上受支持。

免责声明:我是qjsonrpc的作者,希望你试试看!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多