作者:依心摇曳少校 | 来源:互联网 | 2022-12-31 19:42
我尝试了解protobuf和gRPC以及如何使用它们.你能帮我理解一下:
考虑到OSI模型是什么,例如Protobuf在第4层?
通过消息传递思考如何"流动"gRPC做什么是protobuf错过的?
如果发件人使用protobuf,服务器可以使用gRPC还是gRPC添加只有gRPC客户端可以提供的内容?
如果gRPC可以进行同步和异步通信,Protobuf只是用于编组,因此与状态无关 - 真或假?
我可以在前端应用程序中使用gRPC而不是REST或GraphQL吗?
我已经知道 - 或者假设我这样做 - 那:
的Protobuf
用于数据交换的二进制协议
由谷歌设计
使用生成的"结构"类似客户端和服务器上的描述来取消 - / - 马歇尔消息
GRPC
使用protobuf(v3)
再次来自谷歌
RPC调用的框架
也使用HTTP/2
可以进行同步和异步通信
对于已经使用该技术的人,我再次认为这是一个简单的问题.我仍然会感谢你对我有耐心并帮助我.我也非常感谢网络深入研究这些技术.
1> Peter Wishar..:
协议缓冲区是(是?)接口定义语言和序列化库:
您可以在其IDL中定义数据结构,即描述要使用的数据对象
它提供了将数据对象转换为二进制文件的例程,例如用于从磁盘写入/读取数据
gRPC使用相同的IDL,但添加了语法"rpc",它允许您使用Protobuf数据结构作为数据类型定义远程过程调用方法签名:
您可以定义数据结构
您添加了rpc方法定义
它提供代码以通过网络提供和调用方法签名
如果需要,您仍然可以使用Protobuf手动序列化数据对象
在回答问题时:
gRPC在第5,6和7层工作.Protobuf在第6层工作.
当你说"消息传输"时,Protobuf并不关心传输本身.它只适用于任何数据传输的任何一端,将字节转换为对象
根据定义使用gRPC意味着您使用的是Protobuf.您可以编写自己的客户端使用Protobuf但不能使用gRPC与gRPC进行互操作 - 但使用gRPC会更容易
真正
是的你可以
2> chilladx..:
实际上,gRPC和Protobuf是两个完全不同的东西.让我简化:
gRPC管理客户端和服务器可以交互的方式(就像具有REST API的Web客户端/服务器)
protobuf只是一个序列化/反序列化工具(就像JSON一样)
gRPC有两个方面:服务器端和客户端,可以拨打服务器.服务器公开RPC(即可以远程调用的函数).你有很多选择:你可以保护通信(使用TLS),添加认证层(使用拦截器),...
你可以在任何程序中使用protobuf,它不需要是客户端/服务器.如果你需要交换数据,并希望它们是强类型的,protobuf是一个不错的选择(快速和可靠).
话虽这么说,您可以将两者结合起来构建一个不错的客户端/服务器系统:gRPC将是您的客户端/服务器代码,并为您的数据协议提供原型.
PS:我写这篇论文是为了说明如何使用Go逐步构建带有gRPC和protobuf的客户端/服务器.
谢谢您,这有助于我实施示例。