一种声明式模式语言,可由同一份 .skir 文件生成 TypeScript、Python、Java、Go、C++ 等多语言的类型安全数据模型与 RPC 代码。
protocolbuffers/protobuf
Google 推出的跨语言、跨平台结构化数据序列化格式,附带 protoc 编译器和多语言运行时。
- Star
- 72,151
- Fork
- 16,358
- 未关闭 Issue
- 371
- 最近提交
- 15小时前
这是什么?
Protocol Buffers(简称 protobuf)是一种与编程语言和平台无关的结构化数据序列化机制。开发者用 .proto 文件定义数据结构,再通过 protoc 编译器生成目标语言的读写代码。
仓库包含用 C++ 编写的 protoc 编译器、C++ 运行时以及随项目发布的标准 .proto 文件。Java、Python、Objective-C、C#、Ruby、PHP 等语言的运行时位于各自子目录中,Go 和 JavaScript 等则在独立仓库维护。发布页提供预编译的 protoc 二进制包,非 C++ 用户可直接下载使用;同时支持 Bazel、Bzlmod 和 WORKSPACE 等构建方式。
该项目常被用作 RPC 系统的数据交换格式,也可替代文本格式来存储紧凑的结构化记录。
核心功能
- 01使用与语言无关的 .proto 文件定义消息结构。
- 02protoc 可为多种目标语言生成序列化代码。
- 03提供 C++、Java、Python、Go、C#、Ruby 等语言的运行时。
- 04在 GitHub 发布页提供预编译的 protoc 二进制文件。
- 05支持 Bazel、Bzlmod 和旧版 WORKSPACE 构建方式。
适用场景
- 为使用不同语言编写的服务定义共享的数据契约。
- 为 gRPC 等风格的 API 序列化请求和响应消息。
- 存储紧凑的结构化记录,替代体积较大或解析较慢的文本格式。
快速上手
- 1
从 GitHub 发布页下载预编译的 protoc 二进制文件
- 2
按照开发者指南中的入门教程操作
使用前须知
- 元数据中的许可证显示为 NOASSERTION,因此许可条款不明确。
- 主分支的最新提交可能因不兼容变更而损坏,稳定构建请固定到某个发布版本。
- C++ 用户或需要修改代码的人必须从源码构建 protoc,工作量更大。
收录于专题
标签
#serialization#rpc#protocol-compiler#code-generation#cross-language#data-format#marshalling#protobuf#protobuf-runtime#protoc
常见问题
- protobuf 是什么?
- Google 推出的跨语言、跨平台结构化数据序列化格式,附带 protoc 编译器和多语言运行时。 Protocol Buffers(简称 protobuf)是一种与编程语言和平台无关的结构化数据序列化机制。开发者用 .proto 文件定义数据结构,再通过 protoc 编译器生成目标语言的读写代码。
- protobuf 可以免费使用吗?用的什么许可证?
- protobuf 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- protobuf 还在维护吗?
- 活跃维护中。protobuf 最近一次提交是在 2026年11月6日。
- protobuf 适合用来做什么?
- 为使用不同语言编写的服务定义共享的数据契约。 为 gRPC 等风格的 API 序列化请求和响应消息。 存储紧凑的结构化记录,替代体积较大或解析较慢的文本格式。
- protobuf 怎么安装和运行?
- 从 GitHub 发布页下载预编译的 protoc 二进制文件 按照开发者指南中的入门教程操作
- 在哪里获取 protobuf?
- 源代码和安装说明在 GitHub 上:https://github.com/protocolbuffers/protobuf
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
317+1 本周10TypeScriptMIT维护活跃更新于 10天前
跨语言的 RPC 框架,通过代码生成器为多种编程语言构建可互通的客户端与服务端。
1.1万+6 本周4123C++Apache-2.0更新于 前天
一种紧凑、易读的 JSON 数据编码格式,用于减少向 LLM 提示词传递结构化数据时的 token 消耗。
2.6万+36 本周1124TypeScriptMIT维护活跃更新于 6天前
基于编译期转换的 TypeScript 库,把纯类型定义编译为运行时校验、JSON 序列化等函数。
5962+2 本周233TypeScriptMIT维护活跃更新于 19小时前
基于 Sogou C++ Workflow 的 C++ RPC 框架,支持 SRPC、bRPC、Thrift、tRPC 协议。
2142410C++Apache-2.0更新于 14天前
一个跨平台序列化库,无需先解析或解包即可直接读取二进制数据。
2.7万+19 本周3721C++Apache-2.0更新于 前天