gRPC's guide指出以下内容:
在客户端,客户端有一个称为存根的本地对象(对于某些语言,首选术语是“客户端”)。实现与服务相同的方法。
为什么客户端必须实现这些方法?他们为什么要这么做?在我看来,在大多数情况下,客户端调用服务是因为它本身无法完成特定任务。因此,如果它本身实现了方法,那么调用服务的意义何在?
我仍在学习有关gRPC的过程,所以我的理解仍然很有限。但是,关于它为何如此起作用,我还没有清楚的解释。
答案 0 :(得分:1)
gRPC
位于传输(OSI)层的顶部,并管理与用于HTTP连接的TCP套接字有关的所有事情。
除其他外,它可以处理:
listen
在端口上,并建立accept
客户端连接,connect
ip /端口。 send
/ recv
-从套接字读取消息/向套接字写入消息,消息流等。如果客户端要发送消息,则需要创建一条消息,对其进行序列化(可能使用协议缓冲区),然后移交给gRPC(如图所示调用gRPC客户端API或stub
)套接字send()
。如果客户端已使用gRPC注册了响应回调,那么它将从服务器收到有关响应的通知。
因此,实际上,服务器完成的工作是客户端只是调用客户端API,以便gRPC可以向gRPC服务器发送请求。