【发布时间】:2016-03-14 06:17:07
【问题描述】:
我一直在研究 Apache Thrift、ProtoBuf 和 Flatbuffers。我在link 找到了将 gRPC 与 protobuf 一起使用的教程,但我没有找到任何将 gRPC 与 Flatbuffers 一起使用的文档。有人可以指出我的相关文件吗?我在 Google 和 Stackoverflow 上检查了它。任何帮助将不胜感激。
【问题讨论】:
标签: grpc flatbuffers
我一直在研究 Apache Thrift、ProtoBuf 和 Flatbuffers。我在link 找到了将 gRPC 与 protobuf 一起使用的教程,但我没有找到任何将 gRPC 与 Flatbuffers 一起使用的文档。有人可以指出我的相关文件吗?我在 Google 和 Stackoverflow 上检查了它。任何帮助将不胜感激。
【问题讨论】:
标签: grpc flatbuffers
gRPC 协议与有效负载无关,但代码生成不是。由于尚未为 FlatBuffers 生成代码,因此您需要手动执行一些操作。
细节因语言而异,但基本部分相似。例如,在 Go 中,您需要实现 Codec 并准备 Invoke、NewClientStream 和 RegisterService 所需的描述符。在 Java 中,您需要实现 Marshaller 并为 newCall 和 addService 准备必要的描述符。如果您遇到问题,可以考虑在与 Protobuf 一起使用时查看为 gRPC 生成的代码。
【讨论】:
自从第一次提出这个问题以来,已经取得了进展 a) 使 GRPC 代码生成独立于 protobuf(参见 https://github.com/grpc/grpc/pull/6130),然后将该代码生成器集成到 flatbuffers 编译器 flatc:https://github.com/google/flatbuffers/commit/48f37f9e0a04f2b60046dda7fef20a8b0ebc1a70
这是一个非常基本的第一个实现,欢迎反馈。
【讨论】:
--grpc 存在一些问题,请您检查一下:stackoverflow.com/questions/64063320/…
自 2017-08-17 以来,gRPC 对 flatbuffers 提供了开箱即用的支持,如其博客 https://grpc.io/blog/grpc-flatbuffers/#use-flatbuffers-as-an-idl
中所述最近发布的 Flatbuffers 1.7 版引入了对 gRPC 开箱即用的真正零拷贝支持。
链接文章中的示例命令
flatc --cpp --grpc example.fbs
【讨论】: