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

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
└── LICENSE4. 快速开始
将整合包根目录中的 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