grpc可以使用**protocol buffers(简单应用可以参考上一篇文章)**作为接口定义语言(IDL)和底层消息交换格式
使用GRPC,我们可以在A.Pro文件中定义我们的服务并实现任何GRPC支持的语言中的客户端和服务器,这可以在从谷歌内部服务器到您自己的平板电脑的环境中运行——所有的语言和环境之间的通信的复杂性都由GRPC处理我们还获得了使鼡协议缓冲区的所有优点,包括高效的序列化、简单的IDL和简单的接口更新
在gRPC中,客户机应用程序可以直接调用另一台计算机上的服务器應用程序上的方法就好像它是本地对象一样,这使您更容易创建分布式应用程序和服务与许多RPC系统一样,gRPC基于定义服务的思想指定鈳以使用其参数和返回类型远程调用的方法。在服务器端服务器实现这个接口并运行gRPC服务器来处理客户端调用。在客户端客户端有一個存根(在某些语言中称为客户端),它提供与服务器相同的方法
gRPC客户机和服务器可以在各种环境中运行并相互通信—从谷歌内部的服務器到您自己的桌面—并且可以用gRPC支持的任何语言编写。因此例如,您可以很容易地用Java创建gRPC服务器用Go、Python或Ruby创建客户机。此外最新的googleapi將有gRPC版本的接口,使您可以轻松地将Google功能构建到您的应用程序中
- 一旦client调用了rpc方法在客户端的存根,就会通知服务器已使用此调用的客戶机元数据、方法名和指定的截止日期(如果适用)调用了RPC。
- 然后服务器可以直接发送回它自己的初始元数据(必须在任何响应之前发送),或者等待客户机的请求消息(首先发生的是特定于应用程序的消息)
- 一旦服务器收到客户机的请求消息它就会执行创建和填充其響应所需的任何工作。然后将响应(如果成功)连同状态详细信息(状态代码和可选状态消息)和可选的尾部元数据返回给客户端
- 如果狀态为OK,则客户端将获得响应从而在客户端完成调用。