每天早上一封邮件,把昨天的 AI 梳理好订阅邮件

METAL LAB

protocolbuffers/protobuf

71,769今日 +4C++

Protobuf是谷歌打造的通用数据格式,让不同编程语言的程序能互相交换数据

Protocol Buffers(简称Protobuf)是谷歌开发的数据序列化格式,能把程序里的结构化数据转换成可以存储或通过网络传输的紧凑形式。开发者只需在.proto文件里定义一次数据结构,protoc编译器就能自动生成C++、Java、Python等多种语言的对应代码。这个获得71769个star的仓库同时提供了编译器和多种语言的运行时库。

它做什么

  1. 定义了一套与编程语言、平台无关的数据序列化(把数据转换成可存储或传输的形式)方式
  2. 只需在.proto文件中定义一次数据结构,protoc编译器就能为C++、Java、Python、C#、Ruby、PHP等语言生成对应代码
  3. Go、JavaScript、Dart的支持放在各自独立的配套仓库中
  4. 使用Bazel构建系统的项目可以通过Bzlmod(需Bazel 8以上)或较旧的WORKSPACE方式引入protobuf依赖
  5. 项目建议锁定在正式发布版本上使用,而不是main分支的最新代码,因为后者可能随时出现不兼容的改动

为什么重要

当不同语言编写的服务器和客户端、或者不同公司的系统之间需要交换数据时,双方必须遵循同一套规则,而Protobuf正是被广泛采用的标准之一。做API、微服务或基于gRPC通信开发的工程师在实际工作中很可能会用到这套格式。

本仓库术语

  • 序列化(serialization) · 把程序中的数据转换成可以保存或传输的形式的过程
  • protoc · 读取.proto文件并为各编程语言生成对应代码的protobuf编译器
  • .proto文件 · 用于定义待交换数据结构(字段、类型等)的protobuf专用配置文件
  • Bazel / Bzlmod · 谷歌开发的构建系统及其依赖管理方式
  • 运行时(runtime) · 生成的代码实际运行时所依赖的库

仓库简介(英文)

Protocol Buffers - Google's data interchange format

在 GitHub 打开

热门仓库

全部仓库 →

METAL LAB 最新报道