刚接触protobuf通过service实现rpc真的是一头雾水,相关资料非常少,找到的资料也看不懂,最后找到了两篇博文,非常详尽,看完就懂了。
这时第一篇:http://nightfade.me/post/tech/2013-12-13-dive-into-protocol-buffers-python-api
第二篇:http://nightfade.me/post/tech/2013-12-15-implement-an-asynchronous-rpc-basing-on-protocol-buffers
这个是作者通过protobuf service 完整实现的rpc:https://github.com/nightfade/protobuf-RPC
然后我按照自己对文章和代码理解做了各简单粗略的笔记:
rpcChannel:接收请求时调用service定义的方法。
callmethod必须定义,用来序列化反序列化数据和发送数据。
rpcController:管理rpcChannel,比如捕获网络异常。
编译会生成service和service_stub。它们对应着。
service定义proto文件中定义的方法,用来被调用。
service_stub继承rpcChannel,用来调用service定义的方法。
直接stub对象.service方法就行了。比如service定义了echo方法,stub.echo就回去调用echo方法。