protocolbuffers/protobuf

GitHub: protocolbuffers/protobuf

Google 推出的语言中立、高效的结构化数据序列化框架,用于跨语言、跨平台的数据交换与通信协议定义。

Stars: 70789 | Forks: 16050

# Protocol Buffers - Google 的数据交换格式 [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/protocolbuffers/protobuf/badge)](https://securityscorecards.dev/viewer/?uri=github.com/protocolbuffers/protobuf) 版权所有 2008 Google LLC ## 概述 Protocol Buffers(又称 protobuf)是 Google 的语言中立、平台中立、可扩展的机制,用于序列化结构化数据。你可以在 [protobuf 文档](https://protobuf.dev)中了解更多信息。 本 README 文件包含 protobuf 的安装说明。要安装 protobuf,你需要安装协议编译器(用于编译 .proto 文件)以及你所选编程语言的 protobuf 运行时。 ## 使用 Protobuf 源代码 大多数用户会发现,使用[支持的发布版本](https://github.com/protocolbuffers/protobuf/releases)是最简单的途径。 如果你选择使用主分支的 head 版本,你的构建偶尔会因源代码不兼容的更改和测试不足(因此损坏)的行为而中断。 如果你使用 C++,或者出于项目需要必须从源代码构建 protobuf,你应该固定到发布分支上的某个发布 commit。 这是因为即使是发布分支,在两次发布 commit 之间也可能会经历一些不稳定性。 ### 使用 Bazel 和 Bzlmod Protobuf 支持 Bazel 8 + 版本的 [Bzlmod](https://bazel.build/external/module)。 用户应在其 MODULE.bazel 文件中指定对 protobuf 的依赖,如下所示。 ``` bazel_dep(name = "protobuf", version = ) ``` 用户可以选择覆盖仓库名称,例如为了与 WORKSPACE 兼容。 ``` bazel_dep(name = "protobuf", version = , repo_name = "com_google_protobuf") ``` ### 使用 Bazel 和 WORKSPACE 用户还可以将以下内容添加到其旧版 [WORKSPACE](https://bazel.build/external/overview#workspace-system) 文件中。 请注意,随着 30.x 版本的发布,需要更多的 load 语句来正确设置 rules_java 和 rules_python。 ``` 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() ``` ## Protobuf 编译器安装 Protobuf 编译器是用 C++ 编写的。如果你使用的是 C++,请遵循 [C++ 安装说明](src/README.md)来安装 protoc 以及 C++ 运行时。 对于非 C++ 用户,安装协议编译器最简单的方法是从我们的 [GitHub 发布页面](https://github.com/protocolbuffers/protobuf/releases)下载预构建的二进制文件。 在每个版本的下载部分,你可以找到 zip 包格式的预构建二进制文件:`protoc-$VERSION-$PLATFORM.zip`。它包含 protoc 二进制文件以及随 protobuf 一起分发的一组标准 `.proto` 文件。 如果你正在寻找发布页面中不可用的旧版本,请查看 [Maven 仓库](https://repo1.maven.org/maven2/com/google/protobuf/protoc/)。 这些预构建的二进制文件仅针对已发布的版本提供。如果你想使用 HEAD 处的 github 主版本,或者你需要修改 protobuf 代码,或者你使用的是 C++,建议从源代码构建你自己的 protoc 二进制文件。 如果你想从源代码构建 protoc 二进制文件,请参阅 [C++ 安装说明](src/README.md)。 ## Protobuf 运行时安装 Protobuf 支持多种不同的编程语言。对于每种编程语言,你可以在相应的源目录中找到有关如何安装该特定语言的 protobuf 运行时的说明: | 语言 | 源代码 | |--------------------------------------|-------------------------------------------------------------| | C++ (include C++ runtime and protoc) | [src](src) | | Java | [java](java) | | Python | [python](python) | | Objective-C | [objectivec](objectivec) | | C# | [csharp](csharp) | | Ruby | [ruby](ruby) | | Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)| | PHP | [php](php) | | Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) | | JavaScript | [protocolbuffers/protobuf-javascript](https://github.com/protocolbuffers/protobuf-javascript)| ## 快速入门 学习如何使用 protobuf 的最佳方法是遵循我们[开发者指南中的教程](https://protobuf.dev/getting-started)。 如果你想通过代码示例学习,请查看 [examples](examples) 目录中的示例。 ## 文档 完整文档可在 [Protocol Buffers 文档站点](https://protobuf.dev)找到。 ## 支持政策 阅读我们的[版本支持政策](https://protobuf.dev/version-support/),以了解语言库的支持时间框架。 ## 开发者社区 若要接收 Protocol Buffers 即将发生变更的警报,并与 protobuf 开发者和用户建立联系,[请加入 Google Group](https://groups.google.com/g/protobuf)。
标签:Bazel, C++, CVE监控, DNS解析, Go, Google, IDL, JS文件枚举, Nuclei, Protobuf, Protocol Buffers, Python, RPC, Ruby工具, 中间件, 序列化, 开发库, 开源项目, 接口定义语言, 数据交换格式, 数据可视化, 数据序列化, 数据擦除, 数据结构, 无后门, 日志审计, 语言中立, 逆向工具, 通信协议