百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

rest_rpc

> 编程语言
开源

现代 C++(C++20),简单易用的 RPC 框架

2.0K stars0 点赞1 次浏览
访问官网GitHub

工具介绍

现代 C++(C++20),简单易用的 RPC 框架

rest_rpc

操作系统 (编译器版本) 状态
Ubuntu 22.04 (clang 14.0.0)
Ubuntu 22.04 (gcc 11.2.0)
macOS Monterey 12 (AppleClang 14.0.0.14000029)
Windows Server 2022 (MSVC 19.33.31630.0)
c++20,性能高,跨平台,易于使用的 RPC 框架。
爱上 RPC 真是太容易了。
现代 C++ 开发的 RPC 库就是这样简单易用!

rest_rpc 简介

rest_rpc 是一个高性能、易用、跨平台、仅包含头信息的基于 c++20 协程的 RPC 库,其目标是使 TCP 通信变得非常简单易用,即使不懂网络通信的人也可以直接使用它。它依赖于 header-only 的 standalone asio(tag:asio-1-36-0)。 使用起来非常方便,用户只需要关注自己的业务逻辑即可。

编译器版本

需要完全支持 c++20 的编译器: gcc12+、clang15+、msvc2022

谁在使用 rest_rpc

  1. 博世汽车

rest_rpc 的特点

易

rest_rpc 为用户提供了非常简单易用的接口,几行代码即可实现 rpc 通信。下面来看第一个示例。

一个加法的rpc服务

cpp
//服务端注册加法rpc服务

int add(rpc_conn conn, int a, int b) { return a + b; }

int main(){
  rpc_server server("127.0.0.1:9004", std::thread::hardware_concurrency());

  server.register_handler<add>();

  server.start();
}
cpp
//客户端调用加法的rpc服务
int main(){
  auto rpc_call = []() -> asio::awaitable<void> {
    rpc_client client;
    auto ec = co_await client.connect("127.0.0.1:9004");
    if(ec) {
      REST_LOG_ERROR << ec.message();
      co_return;
    }
    
    auto r = co_await client.call<add>(1, 2);
    if(r.ec == rpc_errc::ok) {
      REST_LOG_INFO << "call result: " << r.value;
      assert(r.value == 3);
    }
  };
  
  sync_wait(rpc_call());
}

获取对象的 RPC 服务

cpp
//1.先定义person对象
struct person {
  int id;
  std::string name;
  int age;
};

//2.提供rpc服务
person get_person(person p) {
  p.name = "jack";
  return p;
}

int main(){
  rpc_server server("127.0.0.1:9004", std::thread::hardware_concurrency());
  server.register_handler<get_person>();
  server.start();
}

在这里增加用户

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言