首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在web应用程序中,您是否需要在客户端和服务器端都使用protobufs副本?

在web应用程序中,您是否需要在客户端和服务器端都使用protobufs副本?
EN

Stack Overflow用户
提问于 2021-08-19 01:20:51
回答 1查看 52关注 0票数 0

我不确定这是否是发布这个问题的合适论坛,但我正在尝试在web应用程序的上下文中学习gRPC/protobufs。我在Flutter中构建UI,后端在Go中使用MongoDB。我能够运行一个简单的go服务,并且能够使用Kreya查询它,但是我现在的问题是-我如何将UI与后端集成?为了调用Kreya,我需要导入protobufs。我需要在前端和后端维护相同的协议吗?这意味着,我是否真的需要将后台的所有协议复制到我的UI代码库中,并在那里进行本地编译?这似乎是一场噩梦,因为现在必须在两个地方维护protobufs,而不是在一个地方。

维护协议的最好方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-19 02:46:43

是的,但可以将protos看作是客户端和服务器之间的共享(契约)。

protos定义了客户端能够与服务器通信的接口。为了使其有效,客户端和服务器需要实现相同的接口。

要做到这一点,一种方法是将protos存储在一个存储库中,您可以在实现它的任何客户端和服务器中共享该存储库。这为protos提供了一个单一的真理来源。我还将protos编译(protoc)生成为我将在此共享protos存储库中使用的语言(例如Golang、Dart等)的副本,并在需要时从存储库导入。

然后,在您的示例中,客户端导入Dart生成的源,Golang服务器从共享存储库导入Golang生成的源。

或者,您的客户端和服务器可以在需要时动态地protoc编译适当的源代码,通常作为自动构建过程的一部分。

尽量不要跨客户端和服务器复制protos,因为这将使维护一致性变得具有挑战性;确保每个副本保持同步将是具有挑战性的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68840930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档