GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf来声明数据模型和RPC接口服务。
想直接撸代码的直接通过传送门吧。(还有下面的都是图文混合,对于要配置项目,最快的方式,去github里面获取)
传送门:https://github.com/niyige/GRPCMvcApp
先看看这张大图:
现在来说说在Android这边的使用:
配置Gradle相关:
在moudle为app里面的Gradle 的android{}里面加上如下:
在 dependencies里面加上:
在项目级别里面的gradle文件里面加上(最外层的gradle):
加上红线划了的这句。(注意:对比自己的gradle文件,少了什么,就加上什么,上面的都是截图,可以去github里面直接拿来用)。到此为止,gradle相关就配置完了,当然,上面的版本可能有更新,可自行用最新的。
对于proto文件的编写,就不在描述,编译proto,还需要一个插件,在Android Studio里面的插件里面install下就好,如下图:
安装划了红线的即可。
这个时候,对于运行使用了GRPC的项目来说,已经可以正常的运转了。
接下来,一步一步来描述,如何用MVC模式来封装下GRPC相关的网络调用。
在这之前,我们先明白几个概念:
Model :是应用程序中用于处理应用程序数据的部分(负责对数据的存取)
View :V层根据M返回的数据来显示对应的页面
Controller :主要是处理用户交互(根据用户操作的View层获取用户行为数据,并提供给M,M处理后,更新V)
好了,封装开始:
定义一个接口CallBack,里面有个方法callback(),如图:
在Activity里面(view层),把callback初始化,并实现里面的方法,实现如下:
接下来我们需要获取数据了,比如点击某个按钮发送一个请求,如图:
再来看看SayHello 的具体:
对于CallBack这个接口的真正调用出,是在异步任务的onPostExecute()方法里面,关于异步任务的封装,我就不在多说,可以自行去看代码。必要代码:
获取到数据后,判断无误后就开始调用接口里面的方法(该方法就是一开始我们写的一些更新UI的一些操作)。
本文demo地址:https://github.com/niyige/GRPCMvcApp
参考资料:
grpc-android:https://github.com/grpc/grpc-java/tree/master/examples/android
原理分析:http://shift-alt-ctrl.iteye.com/blog/2292862