真正好用的RPC框架rest_rpc正式发布第一个版本
rest_rpc是由c++开源技术社区(purecpp.org)创建和发起的项目,在经过多次迭代和重构之后,终于发布第一个版本了。rest_rpc是modern c++开发的一个易用、灵活、跨平台和高性能的RPC框架。和国内外一些大公司开发的RPC框架相比,rest_rpc有哪些特色呢?
rest_rpc的特点
rest_rpc具备下面几个特点
- 真的像本地函数一样调用
- 使用简单,用户只需要关注业务即可
- 灵活,RPC调用的序列化方式可以自由定制,比如支持json,支持msgpack等方式
- 支持同步和异步调用
这几个特点也是之前的文章里提到的评价一个RPC是否好用的标准,无疑rest_rpc完全符合这些标准,是一个真正好用的RPC,并且还走得更远。
传统的网络库处理业务逻辑的过程一般分为5步:
- 接收网络数据;
- 解析网络数据;
- 调用业务逻辑;
- 打包结果;
- 发送数据;
如果使用rest_rpc,就只有1步了
1.只需要调用业务逻辑(其他的框架都帮你做好了)。
rest_rpc提供一站式服务,将1,2,4,5步完全省略掉,让用户只用关注第3步的业务逻辑即可,省心省力!如果用户之前用到了其他的网络库,想换成rest_rpc也很简单,不需要做任何修改,只要把业务逻辑函数注册一下就行了,可以直接复用,什么都不用改,省心省力!
rest_rpc的最主要的特点是好用,用户只需要像本地调用那样去调用RPC服务接口,无需关注框架和网络的细节既可以实现远程调用,只需要关注自己的业务逻辑即可。除了易用的特点之外,rest_rpc还具备很好的灵活性,用户可以选择RPC序列化的方式,还支持自定义的序列化方式。
rest_rpc的使用
我们以一个最简单的例子来展示如何使用rest_rpc,这个例子中,服务器提供了一个 int add(int a, int b) RPC服务接口,客户端通过RPC调用获取远程调用的结果。
服务器端代码
#include <rest_rpc/server.hpp> using namespace timax::rpc; int add(int a, int b) { return a + b; } int main() { using codec_type = msgpack_codec; //选择序列化方式,支持json,msgpack等种方式,可以自己扩展 auto sp = std::make_shared<server<codec_type>>(port, thread_num); //创建server //注册业务逻辑处理函数,支持普通函数,函数对象,lambda,std::function和成员函数,你想用什么就用什么,没有任何限制 sp->register_handle