Protocol Buffers 引入新的 Go API,并无限期支持旧版本
Go 团队宣布推出 Protocol Buffers 新的 Go API(APIv2),并表示这是一个重要的修订版本。APIv2 主要提供了反射(Reflection)功能,开发者通过它能够检测 Protocol Buffers 类型系统的数值,但由于官方变更了 Message 的类型定义,因此 API 的新旧版本不兼容。
Protocol Buffers 是谷歌开发的语言无关的数据交换格式,也是序列化结构数据的扩充机制,与 XML 类似,但是更小更简单。
构建新 API 的动机
Go 的首个 Protocol Buffers 软件包已经发布了十年,在这十年里,此软件包与 Go 一起发展壮大,它的用户需求也有所增长。Go 官方提到,不少开发者希望编写使用反射(Reflection)来检查协议缓冲区(protocol buffer)消息的程序,但reflect
反射软件包只可检测 Go 的类型和数值,会忽略来自协定缓冲区类型系统中的信息。例如,我们可能想编写一个遍历日志条目并清除任何注释为包含敏感数据的字段的函数,但由于注释字段不是 Go 类型系统的一部分,所以操作起来比较麻烦。
除此之外,开发者会使用协议缓冲区编译器生成的数据结构之外的其他数据结构,例如能够代表其消息类型在编译时未知的动态消息类型。最后,proto.Message
也是常见的问题根源。
官方表示,上述三个问题都有一个共同的原因,也有一个共同的解决方案:Message
接口应完全指定消息的行为,并且对Message
值进行操作的函数应自由接受可以正确实现接口的任何类型。
由于Message
在保持包 API 兼容的同时无法更改类型的现有定义,因此官方决定推出全新的 Protocol Buffers 模块,且新版本与旧版本不兼容。
Reflection(反射)就是新版本的旗舰功能,它提供了类似reflect
反射软件包检测 Go 的类型和数值的功能。Protocol Buffers 的反射功能会根据 Protocol Buffers 的类型,提供检测系统数值的能力,该软件包包含了类型描述符,描述了来源文件和数值接口中定义的类型结构,其提供了检查和操作消息的能力。
官方把 Go Protocol Buffers 原来的版本称为 APIv1,而新版本称为 APIv2,由于 APIv1 和 APIv2 不兼容,因此针对每个版本使用了不同的模块路径。官方提到,因为每个开发者迁移到新版本的速度不同,且部分程序可能会持续使用旧版本,甚至在同一个程序中,也有可能会使用不同的 API 版本,因此官方目前打算无限期地支持 APIv1。
github.com/golang/protobuf@v1.3.4
是最接近 APIv2 之前的 APIv1 版本github.com/golang/protobuf@v1.4.0
是根据 APIv2 实现的 APIv1 版本google.golang.org/protobuf@v1.20.0
是 APIv2 版本
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云办公系统 skyeye v2.1.1 发布,新增问卷模块
云办公系统skyeye v2.1.1版本新增问卷模块。 功能: 可视化设计与智能编辑:在线操作,无需繁琐的设计流程,通过简单的拖拽即可完成问卷的设计 多种题型,供你选择:支持单选题、多选题、填空题、评分题等 设置答题逻辑: 通过逻辑关系的控制,保证答卷样本数据的有效可用性 数据分析&统计报表:可以通过条形图,柱状图等多种图形统计查看问卷信息 多渠道样本搜集:可以通过微博,QQ,微信等多种渠道手机问卷 效果图: 效果图 效果图
- 下一篇
Android 成去年漏洞最多 OS,20 年来 Debian Linux 漏洞总数最多
TheBestVPN根据“美国国家标准技术研究院的国家漏洞数据库"公布的数据整理出了一份报告表明,Android 是 2019 年最易受攻击的操作系统,全年共发现了 414 个漏洞。其次是具有 360 个漏洞的 Debian Linux,Windows Server 2016 和 Windows 10则分别位列第三和第四名。 此外,在 2016年和 2017年,Android 也是漏洞最多的操作系统。只有在 2018年的时候,Debian GNU/Linux的漏洞数量超过了Android,位列榜首。 有意思的是,从上图可以看出,自1999-2019年的 20年期间,Debian Linux 已取代 Android成为漏洞数量最多的操作系统。总数上,Debian Linux 共发现了 3067 个漏洞,Android OS则发现了 2563 个漏洞。此外,Windows Server 2008则是漏洞数量最多的 Windows 版本,漏洞数为 1421。 而针对此次的报告结果,据Fast Company 报道称,Android 发言人则表达了不一样的看法,其表示,“我们致力于提高透明度,...
相关文章
文章评论
共有0条评论来说两句吧...