原文在这里。
Tag: protobuf
google.golang.org/protobuf/encoding/protojson 是 Go 语言中的一个库,用于处理 Protocol Buffers(protobuf)和 JSON 之间的转换,遵循https://protobuf.dev/programming-guides/proto3#json实现。
Protobuf(Protocol Buffers)和 JSON 都是数据序列化格式,但它们在许多方面有着显著的不同。以下是对两者的一些主要比较:
在 Protocol Buffers (protobuf) 中,可以使用特定的选项来指定生成的 JSON 标签。通过在消息定义中使用 [(json_name)] 选项,可以控制生成的 JSON 字段名称。这样可以确保 Protocol Buffers 和 JSON 之间的互操作性。
什么是Protocol Buffer命名空间冲突?
所有链接到Go二进制文件的Protocol Buffer声明都被插入到一个全局注册表中。
细算下来,接触protobuf也有5、6年了,从最开始的简单了解使用,到后来的自己翻译了相关的使用文档,最近两年因为工作方向调整,protobuf就不怎么使用了。
本文以Ubuntu22.04为例,采用CMake从源码开始安装Protobuf v3.23.2。
1. gRPC简介
gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用Protocol Buffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支持。gRPC具有以下几个特点:
本文介绍.proto文件的编码风格。遵循下面的惯例,可以使你的protocol buffer消息定义和它们对应的类连贯且已读。
本文介绍protocol buffer消息二进制传输格式。在应用程序中使用protocol buffer时,你并不需要了解这些,但它对你了解protocol buffer格式如何影响你的编码消息的大小很有用。
这篇指南讲述如何使用Protocol Buffers来结构化你的Protocol Buffer数据,包括.proto文件语法以及如何从.proto文件生成你的访问类型。本文主要涵盖了proto3的语法,proto2的语法参见Proto2 Language Guide。
本教程提供protocol buffer在C++程序中的基础用法。通过创建一个简单的示例程序,向你展示如何:
本章节实际上是介绍Protocol Buffer编译器从给定的protocol定义中生成的C++代码。所有proto2和proto3生成的代码不同之处都会高亮标出 --- 需要注意的是这些不同之处只是生成的代码中的不同,而不是消息类/接口(同一版本的编译器生成的是一样的)的不同。开始之前,你应该先了解proto2 language guide或proto3 language guide。
| 包名 | 说明 | | :----------------------------------------------------------------------------------------------------------------------- | :-------------------------------- | | google::protobuf | Protocol Buffer运行时库核心组件。 | | google::protobuf::io | I/O操作辅助类。 | | google::protobuf::util | 工具类。 | | google::protobuf::compiler | Protocol Buffer编译器实现。 |
本文描述处理Protocol Buffer常用到的一些设计模式。你也可以给Protocol Buffers discussion group发送设计或使用问题。
Arena分配是仅C++有的功能,在使用Protocol Buffer时,它可以帮助你优化你的内存使用,提高性能。在.proto文件中启用Arena分配会在生成的C++代码中添加处理Arena分配的额外代码。关于Arena分配API的细节,详见Arena Allocation Guide。
本文主要介绍Protocol Buffer类在C++如何工作,当然也包含Protocol Buffer本身应用文档。本文包含: