服务器更改时如何为客户端更新 protobuf 文件

Posted

技术标签:

【中文标题】服务器更改时如何为客户端更新 protobuf 文件【英文标题】:How can I update protobuf file for client when server changed 【发布时间】:2017-04-13 08:02:48 【问题描述】:

我是微服务生态系统的新手,刚刚开始研究 gRPC。但是当我尝试理解 gRPC 和 Protobuf 工作流程时遇到了问题。

首先,我有一个服务器和一个客户端通过 gRPC 和 NodeJS 相互通信。然后我的服务器出现问题,所以我必须修复它。但不幸的是,我也必须更改 protobuf 文件,因为我意识到错误来自我的 gRPC 服务。

所以,现在我手动更改客户端和服务器中的 protobuf 文件。但我想自动更改(同步)客户端中的原型文件(那是微服务,对吧?)。

请告诉我你让它自动的方法! :(

【问题讨论】:

我猜这是一个关于如何管理依赖关系的问题,以便客户端和服务器共享原始文件的相同副本。这个问题有很多可能的答案。但是,请记住,您不需要更新客户端,除非客户端需要使用您添加的新字段。 Protobuf 旨在让您无需更新旧程序即可添加新字段,除非他们需要使用新字段——它是向后兼容的。 我必须建立一个交付服务的系统,所以我需要它是动态的。 :D 【参考方案1】:

通过在一个单独的项目中提取您的 .proto 文件并构建一个将生成存根代码并将其发布到公共位置的管道来自动化此操作的最简单方法。然后您可以通过将其作为依赖项添加到您的客户端和服务器来使用它。

但正如@Kenton 所说,您不必在客户端更新您的 .proto 文件以进行所有更改,默认情况下它是向后兼容的。

【讨论】:

以上是关于服务器更改时如何为客户端更新 protobuf 文件的主要内容,如果未能解决你的问题,请参考以下文章

向导中断时如何为 ambari 重新安装 Kerberos 客户端?

更改设备方向时如何为uiimageview设置动画

更新CoreData模型版本时如何为实体的新属性设置默认值

滚动时如何为 recyclerview 项目设置动画?

弹出键盘时如何为 UITableView 设置动画?

在 iOS Swift 中实现方法时如何为闭包命名(语法问题)