18

我一直在研究 Apache Thrift、ProtoBuf 和 Flatbuffers。我在链接中找到了将 gRPC 与 protobuf 一起使用的教程,但我没有找到任何文档将 gRPC 与 Flatbuffers 一起使用。有人可以指出我的相关文件吗?我在 Google 和 Stackoverflow 上检查了它。任何帮助,将不胜感激。

4

3 回答 3

17

自从第一次提出这个问题以来,已经取得了进展 a) 使 GRPC 代码生成独立于 protobuf(参见https://github.com/grpc/grpc/pull/6130),然后将该代码生成器集成到 flatbuffers 编译器中flatchttps ://github.com/google/flatbuffers/commit/48f37f9e0a04f2b60046dda7fef20a8b0ebc1a70

这是一个非常基本的首次实现,欢迎反馈。

于 2016-06-29T23:09:57.277 回答
9

gRPC 协议与有效负载无关,但代码生成不是。由于还没有为 FlatBuffers 生成代码,因此您需要手动执行一些操作。

细节因语言而异,但基本部分是相似的。例如,在 Go 中,您需要实现Codec并准备InvokeNewClientStreamRegisterService所需的描述符。在 Java 中,您需要实现Marshaller并准备newCalladdService所需的描述符。如果您遇到问题,可以考虑在与 Protobuf 一起使用时查看为 gRPC 生成的代码。

于 2015-12-09T16:59:58.800 回答
1

自2017 年 8 月 17 日以来, gRPC 对flatbuffers 提供了开箱即用的支持,如他们的博客https://grpc.io/blog/grpc-flatbuffers/#use-flatbuffers-as-an-idl中所述

最近发布的 Flatbuffers 1.7 版引入了对 gRPC 开箱即用的真正零拷贝支持。

链接文章中的示例命令

flatc --cpp --grpc example.fbs
于 2020-11-25T16:50:59.290 回答