Protocol Buffers介绍与安装指南

Protocol Buffers介绍与安装指南

技术背景

Protocol Buffers(简称protobuf)是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制。它允许你定义结构化的数据,然后使用生成的代码轻松地将结构化数据序列化和反序列化,适用于多种编程语言和平台,在数据交换和存储等场景中应用广泛。

实现步骤

安装前准备

要安装protobuf,需要安装协议编译器(用于编译 .proto 文件)和所选编程语言的protobuf运行时。

源码使用说明

  • 使用发布版本:大多数用户从支持的发布版本开始使用是最简单的方式。
  • 使用主分支头部版本:如果选择使用主分支的头部版本,构建可能会因源不兼容的更改和测试不充分的行为而偶尔失败。
  • 从源码构建:如果使用C++或需要在项目中从源码构建protobuf,应固定到发布分支上的发布提交,因为即使是发布分支在发布提交之间也可能存在一些不稳定性。

不同构建工具配置

Bazel with Bzlmod

Protobuf支持Bazel 7+的Bzlmod。用户应在 MODULE.bazel 文件中指定对protobuf的依赖,如下所示:

1
bazel_dep(name = "protobuf", version = <VERSION>)

用户还可以选择覆盖仓库名称,例如为了与 WORKSPACE 兼容:

1
bazel_dep(name = "protobuf", version = <VERSION>, repo_name = "com_google_protobuf")

Bazel with WORKSPACE

用户也可以在旧的 WORKSPACE 文件中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http_archive(
name = "com_google_protobuf",
strip_prefix = "protobuf-VERSION",
sha256 = ...,
url = ...,
)

load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
protobuf_deps()

load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
rules_java_dependencies()

load("@rules_java//java:repositories.bzl", "rules_java_toolchains")
rules_java_toolchains()

load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()

协议编译器安装

  • C++用户:协议编译器用C++编写。如果你使用C++,请按照C++安装说明安装 protoc 以及C++运行时。
  • 非C++用户:最简单的安装协议编译器的方法是从GitHub发布页面下载预构建的二进制文件。在每个版本的下载部分,可以找到zip包中的预构建二进制文件:protoc-$VERSION-$PLATFORM.zip,它包含 protoc 二进制文件以及与protobuf一起分发的一组标准 .proto 文件。如果在发布页面找不到旧版本,可以查看Maven仓库。这些预构建的二进制文件仅适用于发布版本。如果你想使用GitHub主分支的最新版本,或者需要修改protobuf代码,或者使用C++,建议从源码构建自己的 protoc 二进制文件。若要从源码构建 protoc 二进制文件,请参阅C++安装说明。

运行时安装

Protobuf支持多种不同的编程语言。对于每种编程语言,你可以在相应的源目录中找到如何安装该特定语言的protobuf运行时的说明:

语言源目录
C++(包括C++运行时和 protocsrc
Javajava
Pythonpython
Objective-Cobjectivec
C#csharp
Rubyruby
Goprotocolbuffers/protobuf-go
PHPphp
Dartdart-lang/protobuf
JavaScriptprotocolbuffers/protobuf-javascript

最佳实践

  • 学习使用:学习如何使用protobuf的最佳方法是遵循开发者指南中的教程。如果想从代码示例中学习,可以查看 examples 目录中的示例。
  • 查阅文档:完整的文档可在Protocol Buffers文档网站上找到。
  • 关注支持政策:阅读版本支持政策,以了解语言库的支持时间范围。
  • 加入社区:加入Google Group,以了解Protocol Buffers即将发生的变化,并与protobuf开发者和用户建立联系。

常见问题

  • 构建失败:如果选择使用主分支的头部版本,构建可能会因源不兼容的更改和测试不充分的行为而失败。建议使用支持的发布版本。
  • 找不到旧版本:如果在发布页面找不到旧版本的预构建二进制文件,可以查看Maven仓库。
  • 源码构建:如果需要从源码构建,尤其是在使用C++时,要注意固定到发布分支上的发布提交,以避免不稳定性。

Protocol Buffers介绍与安装指南
https://119291.xyz/posts/protocol-buffers-introduction-and-installation-guide/
作者
ww
发布于
2025年7月27日
许可协议