gRPC / Protobuf 接口版本控制

2024-03-25

假设我们使用 gRCP/Protobuf 来连接许多应用程序。 这些应用程序是由他们自己的团队以自己的速度开发和发布的。随着时间的推移,同一应用程序将出现不同版本(例如,安装在用户 PC 上的桌面应用程序),它们在定义的界面上使用不同的版本。

虽然 Protobuf 旨在允许向后兼容,有没有办法知道不同点运行的界面版本是什么?

最简单的实现是让界面版本等于应用程序版本。 但由于使用了多种语言,因此在所有语言中实现应用程序版本控制并非易事。

那么如何进行版本接口并让服务器知道客户端版本呢? 我认为服务器应该能够登录

来自 AppName v.version 的 DATETIME 连接 [使用接口 v.version]


在即将推出的 gRPC 版本中,将有一个名为“服务器反射”的新功能。这将允许客户端向服务器询问描述正在使用的原始文件的描述符。客户端不会知道服务器正在运行的版本,而不是服务器知道客户端正在运行的版本。如果服务器描述符与客户端已有的描述符匹配,那么它将知道它们正在使用相同的版本。

这将在版本中发布1.1.

请注意,Protobuf 的设计目的是让您don't必须这样做!如果正确设置原型,新旧版本的客户端和服务器应该可以协同工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gRPC / Protobuf 接口版本控制 的相关文章

  • 使用 gradle 进行简单的 protobuf 编译

    如果您正在寻找示例 gradle protobuf 项目 请查看here https github com google protobuf gradle plugin tree master examples exampleProject
  • protobuf-net v2 和 Monotouch:它如何混合?

    我一直在尝试将 protobuf net 与 MonoTouch 一起使用 但我不知道如何使用 尽管听说这是可能的 但我还没有找到任何教程或任何实际有效的示例 马克 格拉维尔证实了这一消息在他的博客上 http marcgravell bl
  • Web 服务版本控制策略的优缺点

    更新20100224 我真的不需要某些供应商网站上的一些蹩脚定义 我正在寻找的是实际实施以及实际实施这些东西的人们在日常 IT 业务周期中面临的挑战 更多内容如下 尚未制定 采用任何退休策略 显然需要制定一项策略 我对您如何制定该战略并将其
  • protoc 在哪里以及如何安装它?

    我想使用protoc生成java文件的命令 我一直按照 github README 中的说明进行操作https github com protocolbuffers protobuf https github com protocolbuf
  • 对 Java 协议缓冲区对象进行一些小更改

    我想在 Java 协议缓冲区对象树的深处进行一个小更改 我可以使用 getBuilder 方法来创建一个新对象 该新对象是旧对象的克隆并进行一些更改 当深入完成此操作时 代码会变得丑陋 Quux Builder quuxBuilder fo
  • 礼仪:版本会影响我的开源项目分支吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这个问题是关于礼仪和开源项目的 我从 github 分叉了一个应用程序并添加了两个新功能 The 第一个特征在其他地方经常被要求 我已经添加了
  • 检查 grpc 服务器可用性?

    有什么方法可以检查吗grpc server无需进行实际的过程调用和实现额外的查询 即rpc HealthCheck Input returns Status 大多数客户应该使用通道状态API https github com grpc gr
  • 如何使用 Visual Studio 将文件版本嵌入 MSI 文件中?

    我的 C 程序有一个安装项目 该安装项目的属性中有一个版本 我希望生成的 MSI 文件嵌入此版本 这样我就可以在资源管理器中将鼠标悬停在该文件上并查看该文件的版本 我用的是VS2008 我怎样才能做到这一点 如果您只是将 版本 1 5 0
  • 使用 ProtoBuf 将数据流式传输到带有标头的日志文件

    我正在尝试将数据流式传输到微控制器上 SD 卡上的日志文件 该微控制器从某些传感器读取数据并将值存储在文件中 为了序列化数据 我将使用 NanoPB 它是 C 语言的 protobuf 实现 资源效率很高 日志文件具有以下结构 它需要写入由
  • 确定我的 Silverlight 应用程序的版本

    我正在尝试确定 Silverlight 应用程序的版本号 目前我正在使用 string name Assembly GetExecutingAssembly FullName AssemblyName asmName new Assembl
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • 版本控制存储过程/PLSQL?

    有没有一种有效的方法来对用 PL SQL 编写的存储过程进行版本控制 我只提到 PL SQL 因为可能存在特定的工具 任何针对存储过程版本控制的答案都是理想的 在我目前的工作中 团队现在使用以下方法对PL SQL进行版本控制 编译PL SQ
  • protobuf3,python - 如何将元素设置为 map dict?

    当我尝试设置 a 的元素时map
  • 如何在提交后删除本地 git 历史记录?

    我想从 Dropbox 切换到开源 Sparkleshare 它使用 git 进行同步和版本控制 如果说我在文件夹中删除了一个 1GB 文件 它会保留在本地 git 文件夹的历史记录中 但我希望将这种大量数据放在服务器上而不是客户端上 如何
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 在 PHP 页面中嵌入 svn 修订号的简单方法?

    注意到这个页面的右下角有 SVN 修订 ID 了吗 我假设这是动态的 我很乐意将其添加到我的一些网站中 就像源代码中的注释一样 以确保代码推送顺利进行 注意 您还可以假设相关站点的工作目录是相关存储库的 svn checkout Edit
  • 解决bazel中使用gRPC cpp时的依赖问题

    我正在尝试运行一个依赖 gRPC 的简单程序 我尝试了几个示例 但仍然出现以下错误 ERROR home git examples WORKSPACE 1 1 name git repository is not defined ERROR
  • C# 中的序列化和对象版本控制

    如果我想序列化一个对象 我必须使用 Serializable 属性和所有成员变量将被写入该文件 我不知道如何进行版本控制 例如如果我添加一个新的成员变量 重命名变量或仅删除变量 然后打开 反序列化 文件 如何确定对象 文件版本 以便我可以正
  • 您如何决定何时升级项目中的库?

    我从事的项目使用多个开源 Java 库 当这些库的升级出现时 我们倾向于遵循保守的策略 如果它没有坏 就不要修理它 如果它没有我们想要的新功能 请忽略它 我们遵循这种策略是因为我们通常没有时间放入新库并彻底测试整个应用程序 像许多软件开发团
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9

随机推荐

  • 在 UIButton 内显示活动指示器

    我想在按下 UIButton 后将其内容更改为 ActivityIndi cator 我知道按钮有 imageView 和 titleLabel 但我不知道如何在其中放置活动指示器 这就是我创建活动指标的方法 let aiView UIAc
  • PostgreSQL ORDER BY 列位置(而不是按列名称)

    基本上 我不想要 SELECT firstname lastname FROM person ORDER BY lastname 反而 SELECT firstname lastname FROM person ORDER BY
  • 单个 XSLT 文件能否解决这个问题……或者……?

    下面是我的 XML 文件
  • do while 循环不能有两个 cin 语句吗?

    我只是遵循一个关于 do while 循环的简单 C 教程 我似乎已经完全复制了教程中编写的内容 但我没有得到相同的结果 这是我的代码 int main int c 0 int i 0 int str do cout lt lt Enter
  • 如何在 BigQuery 中透视表

    我正在使用 Google Big Query 并且正在尝试从公共样本数据集中获取数据透视结果 对现有表的简单查询是 SELECT FROM publicdata samples shakespeare LIMIT 10 该查询返回以下结果集
  • 如何前进到字节流中包含的压缩字节序列?

    我有一个字节流 它是多个部分的串联 其中每个部分都由一个标头和一个紧缩的字节流组成 我需要拆分此字节流部分 但标头仅包含有关未压缩形式的数据的信息 没有有关压缩数据长度的提示 因此我可以在流中正确前进并解析下一部分 到目前为止 我发现超越压
  • Rake 任务 Rails:upgrade:check 在 Windows 上不起作用。 Rails 3 升级问题

    有什么解决方案可以解决Windows上的rake任务rails upgrade check的问题吗 为了解决这个问题 我安装了这个 gem gem install POpen4 v 0 1 4 gem install win32 open3
  • 您如何组织 NInject 模块?

    NInject 的模块架构看起来很有用 但我担心它会变得有点混乱 您如何组织模块 您将它们保留在哪个组件中 您如何决定哪些接线进入哪个模块 每个子系统都有一个模块 当然 什么值得归类为 子系统 的定义取决于 在某些情况下 某些绑定的责任被推
  • 我的自定义开放图对象的自定义属性未显示在共享对话框中

    我无法获取 Android 应用程序的共享对话框中显示的自定义开放图对象的自定义属性 我创建了一个自定义对象channel在命名空间中myradio android 并定义了一个自定义属性当前歌曲标题在频道中 我还创建了一个自定义操作enj
  • 将 Marketo 表单添加到 Gatsby/JSX

    我正在尝试将 Marketo 表单添加到 Gatsby 站点中 但在将脚本注入页面的顺序方面遇到问题 当我尝试渲染下面的组件时 收到错误消息 ReferenceError MktoForms2 未定义 我尝试注释掉整个 useEffect
  • 如何在 UIMarkupTextPrintFormatter 中添加图像?

    我正在尝试使用直接 HTML 打印文件 但是 在将图像添加到打印文件中时遇到困难 如何在我要打印的 HTML 中引用项目中的图像 UIMarkupTextPrintFormatter 支持标签吗 实际上比我想象的要简单得多 NSString
  • 向 Firefox 扩展添加屏幕截图功能

    是否有跨平台方法从 Firefox 扩展中获取屏幕截图 理想情况下 我希望能够截取 dom 元素的屏幕截图 无论它在页面上是否可见 例如 var 屏幕截图 屏幕截图 document getElementById example 任何指示或
  • 在python中打印下标

    在Python 3 3中 有什么方法可以在打印时使字符串中的部分文本成为下标吗 例如H2 H 然后是下标 2 如果您只关心数字 则可以使用str maketrans https docs python org 3 library stdty
  • JSF 2 复选框和布尔值获取器

    我正在生成一个基于 web 服务的 jaxws 客户端 Jaxb 将使用 java lang Boolean 而不是原始类型生成布尔值 除此之外 它还会生成 bean 的 is 命名约定 但是 如果我尝试将布尔值 例如 isOptional
  • Axios“无法在模块外部使用 import 语句”

    我有一个 Vue js 应用程序 其中两个文件包含 import axios from axios 这些文件位于应用程序内的 src lib 中 并在第一行包含 import 语句 无论 package json 说什么 在 Github
  • Vuex - 多次调度后运行函数

    我正在创建一个应用程序 在某个时刻我需要加载一些数据 但为了让用户看不到损坏的数据 我插入了一个加载组件 目前 我在负载中放置了 setTimeout 但在某些时候 API 响应可能需要超过 1 秒 所以我想仅在所有调度完成时更新加载状态
  • Ninject 教程/文档?

    根据官方网站 http ninject org learn 了解 Ninject 的最佳地点是官方维基 http wiki github com ninject ninject在 Github 上 真的吗 作为一个初学者 我发现官方维基 h
  • 使用什么命令代替 urllib.request.urlretrieve?

    我目前正在编写一个从 URL 下载文件的脚本 import urllib request urllib request urlretrieve my url my filename 文档urllib request urlretrieve
  • 如何让Java.awt.Robot输入unicode字符? (是否可以?)

    我们有一个用户提供的字符串 其中可能包含 unicode 字符 并且我们希望机器人键入该字符串 如何将字符串转换为机器人将使用的键码 你如何做到这一点 使它也独立于java版本 1 3 gt 1 6 我们对 ascii 字符所做的工作是 c
  • gRPC / Protobuf 接口版本控制

    假设我们使用 gRCP Protobuf 来连接许多应用程序 这些应用程序是由他们自己的团队以自己的速度开发和发布的 随着时间的推移 同一应用程序将出现不同版本 例如 安装在用户 PC 上的桌面应用程序 它们在定义的界面上使用不同的版本 虽