前篇:RPC框架介绍(一)
4 gRPC
基于HTTP2,序列化方式默认使用Prototol Buffers,不是JSON
4.1 运行示意图
4.2 使用
前导工作:
1.添加依赖:gRPC、protobuf-maven-plugin
2.src/main/proto下使用protobuf3语法编写proto文件,定义服务接口、接口方法参数对象和接口方法返回对象
3.在pom.xml目录下,控制台分别运行Maven插件命令,生成对应的Java文件:
mvn protobuf:compile
mvn protobuf:compile-custom
服务端:
服务实现类需要扩展接口名Grpc和接口实现类名Base
方法中需要构建返回结果,将返回结果传入stream,返回给调用方,然后通知stream结束使用ServerBuilder.方法来添加服务、启动服务器Server对象,main中启动服务器后,进行阻塞
客户端:
客户端构造方法中,需要初始化连接ManagedChannel对象和初始化要使用的远程服务Stub,其类型为:接口名Grpc.接口名BlockingStub
然后main中创建此客户端对象,写一个调用方法,此方法中构造服务调用参数对象,然后调用远程服务方法,返回接口方法返回对象即可;然后main中就能调用此方法了
先运行服务端,再运行客户端即可
5 HTTP Client
HTTP协议实现
5.1 开发流程
5.2 使用
1.构建HttpClient对象:使用单例模式,可以使用默认值或自定义参数来初始化CloseableHttpClient对象,execute方法请求接口,内部方法handleResponse处理响应,返回结果作为execute的调用结果
2.构建URI对象:基于Builder模式来构建,使用URIBuilder类和setScheme、setHost等方法
3.构建请求对象(示例:HttpGet对象对应Get、HttpPost对象对应Post):创建HttpGet对象,传入String形式的uri即可;HttpPost同理,不过其参数需要通过nvps来添加:
4.HttpClient发起调用及获取调用返回结果(最佳实践):自定义Json数据返回格式,使用类来对应,需要实现Serializable
整合以上步骤即HttpClient发起调用及获取返回结果的示例,也可以使用流氏API来提高易用性