Windows下载、安装protobuf-v35.1(附安装包protoc-35.1-win64.zip)

发布于 2026/8/1 · 1 阅读
Protocol Buffersprotobufprotoc序列化gRPC数据交换编译器Google跨语言代码生成
Protocol Buffers(protobuf)是 Google 推出的语言无关、平台无关、可扩展的结构化数据序列化机制。采用二进制编码,体积比 JSON 小 60%-80%,解析速度更快。支持 C++、Java、Python、Go 等十余种编程语言,与 gRPC 框架深度集成,是微服务架构中最广泛使用的序列化格式之一。

封面.png

1. Protocol Buffers 简介

Protocol Buffers(简称 protobuf)是 Google 于 2008 年正式开源的语言无关、平台无关、可扩展的结构化数据序列化机制。其内部版本 Proto1 自 2001 年即在 Google 内部大规模使用,经历多年打磨后对外发布 Proto2 版本,奠定了跨语言数据交换的基础。2016 年 Google 发布 Proto3,进一步简化语法并提升跨语言一致性。如今,protobuf 已成为微服务架构、RPC 通信和数据存储场景中最广泛使用的序列化格式之一,与 gRPC 框架深度集成,GitHub 上已获得超过 76k Stars。

Protobuf 采用"先定义结构、再使用数据"的工作方式:开发者在 .proto 文件中定义消息格式,然后通过 protoc 编译器自动生成对应编程语言的数据访问代码。相比 JSON 和 XML,protobuf 的二进制编码体积更小(通常减少 70% 以上),序列化/反序列化速度更快,且具备强类型保障。其核心组件包括:协议编译器(protoc)和各编程语言的运行时库。

核心特点:

  • 跨语言支持:官方支持 C++、Java、Python、Go、C#、JavaScript、Ruby、PHP、Dart、Objective-C 等十余种语言
  • 高效紧凑:二进制编码体积比 JSON 小 60%-80%,解析速度更快,节省带宽和 CPU
  • 强类型与模式演化.proto 文件定义数据结构,支持向前/向后兼容的渐进式升级
  • 与 gRPC 深度集成:可直接在 .proto 文件中定义 RPC 服务接口,自动生成客户端/服务端代码
  • 完善的工具链:配套代码生成、格式检查、lint 等工具,开发体验成熟

2. v35.1 版本亮点

该版本汇集了 5 位贡献者10 条 贡献。

v35.1 是 35.x 系列的首个补丁版本,主要修复和优化如下:

Bazel 构建系统:

  • 扩展 Bazel 9 测试覆盖到 csharp、hpb、objc、php、python、rust 和 upb 语言后端,确保多语言构建稳定性
  • 解除 protobuf 对 Bazel proto fragment 的依赖,统一使用 Starlark 版本的 --proto_toolchain_for*(与 34.x 行为一致,注意从 35.0 升级属于不兼容变更)

C++:

  • 为 repeated string 字段新增 cord setter,提升大数据量字符串处理性能

UPB(Python/PHP/Ruby 的 C 扩展基础库):

  • 修复 UPB 中的未定义行为,通过切换到 XCT 段确保构造函数在编译器生成的初始化器之前执行,提升运行时稳定性

3. 获取安装包

如果访问 GitHub 不便,安装包及中文文档:https://hanshuixin.org/go/224M(内含 protoc-35.1-win64.zip、README 中英对照、发布说明中英对照和 LICENSE)。

Windows安装protobuf-v35.1(protoc-35.1-win64).zip
├── protoc-35.1-win64.zip
├── Windows安装protobuf-v35.1(protoc-35.1-win64).pdf
├── README/
│   ├── README.md
│   └── README-中文版.md
├── 发布说明/
│   ├── RELEASE-NOTES.md
│   └── RELEASE-NOTES-中文版.md
└── LICENSE

4. 快速开始

将整合包根目录中的 protoc-35.1-win64.zip 解压到任意目录,将其中的 bin 目录路径添加到系统环境变量 PATH 中,即可在命令行中直接使用 protoc 命令。

常用命令

# 查看版本
protoc --version

# 查看帮助
protoc --help

# 编译 .proto 文件生成 C++ 代码
protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR path/to/file.proto

# 编译 .proto 文件生成 Java 代码
protoc --proto_path=IMPORT_PATH --java_out=DST_DIR path/to/file.proto

# 编译 .proto 文件生成 Python 代码
protoc --proto_path=IMPORT_PATH --python_out=DST_DIR path/to/file.proto