第一篇文章也说到了,net库设计比较“干净”,在其基础上设计rpc框架比较方便。本节一起看下ananas怎样使用protobuf自带的rpc模板,在net库上完成一个完整的rpc框架
#1 服务端设计
(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中,整体的逻辑还是比较清楚的
客户端设计上充分利用的future特性。总入口是位于RpcServer.h中的Call
(1)Call调用了_InnerCall,_InnerCall首先调用ServiceStub中的GetChannel方法,在这个方法里,完成了链接操作,并注册好了net需要的回调函数OnConnect和OnMessage
(2)接着_InnerCall调用了ClientChannel的Invoke方法,在这个方法里完成了数据的发送
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。