GRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。
proto文件的内容。
.proto文件的位置,新建一个与java同级的目录proto,将.proto文件放入。Rebuild后编译器会自动生成一系列的Java文件。
用法:
private class GrpcTask extends AsyncTask<Void, Void, String> {
private ManagedChannel mChannel;
@Override
protected void onPreExecute() {
}
private PersonProto.ResultMsgResponsesayHello(ManagedChannel channel) {
//这些类都是grpc自动生成的
PersonServiceGrpc.PersonServiceBlockingStub stub = PersonServiceGrpc.newBlockingStub(channel);
PersonProto.PersonRequest request = new PersonProto.PersonRequest();
request.name = et_name.getEditText().getText().toString().trim();
request.manage = "1";
request.status = "1";
request.mobilephone = "123456";
PersonProto.ResultMsgResponse response = stub.savePersonInfoRpc(request);
return response;
}
@Override
protected String doInBackground(Void... nothing) {
try {
mChannel = ManagedChannelBuilder.forAddress("192.168.3.158", 8888)
.usePlaintext(true)
.build();
return sayHello(mChannel);
} catch (Exception e) {
return "Failed... : " + e.getMessage();
}
}
@Override
protected void onPostExecute(PersonProto.ResultMsgResponse result) {
try {
mChannel.shutdown().awaitTermination(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
Log.i("TAG", "onPostExecute: result = " + result);
}
}
991

被折叠的 条评论
为什么被折叠?



