首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ananas RPC源码分析-在net库基础上使用protobuf实现rpc(二)

ananas RPC源码分析-在net库基础上使用protobuf实现rpc(二)

原创
作者头像
路小饭
修改2019-02-22 14:33:23
1.2K3
修改2019-02-22 14:33:23
举报

第一篇文章也说到了,net库设计比较“干净”,在其基础上设计rpc框架比较方便。本节一起看下ananas怎样使用protobuf自带的rpc模板,在net库上完成一个完整的rpc框架

#1 服务端设计

ana-pbrpc-server.jpg
ana-pbrpc-server.jpg

(1)首先要定义好proto文件,例如工程里ananas/tests/test_protobuf_rpc/test_rpc.proto

(2)利用test_rpc.proto可以生成test_rpc.pb.h和test_rpc.pb.cc

(3)继承test_rpc.pb.h中的ananas::rpc::test::TestService类,实现自定义的类TestServiceImpl,在其中实现proto中的定义的方法

(4)ananas 封装了Service类,用来统一包装自定义实现的类TestServiceImpl

(5)为了方便统一操作Service,又提供了Server类,将Service放到Server中,整体的逻辑还是比较清楚的

2 客户端设计

ana-pbrpc-client.jpg
ana-pbrpc-client.jpg

客户端设计上充分利用的future特性。总入口是位于RpcServer.h中的Call

(1)Call调用了_InnerCall,_InnerCall首先调用ServiceStub中的GetChannel方法,在这个方法里,完成了链接操作,并注册好了net需要的回调函数OnConnect和OnMessage

(2)接着_InnerCall调用了ClientChannel的Invoke方法,在这个方法里完成了数据的发送

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2 客户端设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档