十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何10分钟搭起第一个protobuf序列化项目:protoc安装、.proto编写与代码生成完整教程

如何10分钟搭起第一个protobuf序列化项目:protoc安装、.proto编写与代码生成完整教程 如何10分钟搭起第一个protobuf序列化项目protoc安装、.proto编写与代码生成完整教程【免费下载链接】protobufProtocol Buffers - Googles data interchange format项目地址: https://gitcode.com/GitHub_Trending/pr/protobuf想快速上手Protocol BuffersprotobufGoogle 的轻量级数据序列化格式吗本文带你走一遍最经典的新手路径安装protoc编译器 → 编写第一个.proto文件 → 执行 protobuf 代码生成 → 编译运行一个可交互的地址簿小项目。全程只需 10 分钟零基础也能跟着做完。为什么选择 protobuf在接触各种序列化格式的横评时Protocol Buffers 几乎总是出现在推荐列表里原因很简单体积小二进制编码比 XML、JSON 更紧凑⚡速度快解析与序列化性能远超文本格式跨语言同一份.proto定义可生成 C、Java、Python、Go、C# 等多种语言代码可扩展字段用编号标识新增字段不破坏旧版本数据。它的核心工作流只有三步定义.proto→ 编译protoc 生成代码→ 使用运行时序列化/反序列化。10分钟上手路线图步骤做什么对应文章章节1安装 protoc 编译器快速安装 protoc 的三种方式2编写 addressbook.proto编写第一个 .proto 文件3运行 protoc 生成代码一条命令完成 protobuf 代码生成4编译并运行示例程序编译运行你的第一个序列化程序下面以仓库中官方维护的地址簿示例为主线它就是 protobuf 官方教程的完整可运行版本。快速安装 protoc 的三种方式protocprotocol compiler是用 C 编写的核心工具负责把.proto文件编译成目标语言代码。对新手来说下载预编译二进制是最省事的方式按你的操作系统三选一即可macOS / Linux推荐包管理器最快安装步骤macOSbrew install protobufUbuntu / Debiansudo apt-get install protobuf-compiler任意平台下载预编译包到 protobuf 的 Release 发布页下载protoc-$VERSION-$PLATFORM.zip解压后把protoc加入 PATH。该压缩包还附带了一整套标准.proto文件开箱即用。Windows直接下载protoc-win32.zip如果项目依赖较多也可以用vcpkg install protobuf一并装好运行时。装好之后验证一下protoc --version 非 C 用户只需要 protoc 二进制 对应语言的运行时库Python 直接pip install protobuf。注意保持两者版本一致详见 README.md 的安装说明。编写第一个 .proto 文件addressbook.proto仓库 examples/ 目录下的 examples/addressbook.proto 就是官方教程的主角。它的结构非常有代表性核心内容只有一段syntax proto3; package tutorial; message Person { string name 1; int32 id 2; string email 3; message PhoneNumber { string number 1; PhoneType type 2; } repeated PhoneNumber phones 4; } message AddressBook { repeated Person people 1; }对照 examples/addressbook.proto记住三个关键规则就够了message定义结构Person里嵌套了PhoneNumberprotobuf 支持消息嵌套字段必须带编号 1、 2是序列化时的字段标识编号一旦发布就永远不要复用或更改repeated表示列表一个联系人可以有多个电话号码一个地址簿包含多个联系人。一条命令完成 protobuf 代码生成protoc 的语法极其直接--语言_out输出目录 你的.proto文件。官方示例 examples/Makefile 中C / Java / Python 三种语言共用同一条生成命令protoc --cpp_out. --java_out. --python_out. addressbook.proto执行后你会得到各语言对应的生成文件如addressbook.pb.cc、addressbook_pb2.py等它们封装了读写二进制数据的完整逻辑。如果项目用 Bazel 构建仓库还提供了 examples/BUILD.bazel一条bazel build :all即可完成生成 编译见 examples/README.md。编译运行你的第一个序列化程序以 C 为例官方脚本在 examples/Makefilemake cpp ./add_person_cpp addressbook.data # 交互式录入联系人 ./list_people_cpp addressbook.data # 读取并打印add_person会提示你输入 ID、姓名、邮箱和电话号码最终把所有内容序列化成二进制写入addressbook.datalist_people再把它反序列化读取出来。录入逻辑可参考 examples/add_person.cc。更妙的地方在于这个addressbook.data文件跨语言通用——C 写入的数据可以直接用list_people_python或list_people_java读取这正是 protobuf 作为数据交换格式的价值所在。新手常见坑3 个高频问题protoc 与运行时版本不一致报 unknown field 或符号缺失时先确认protoc --version与语言运行时版本一致Python 用pip show protobuf查看。找不到 import 的 proto如果你的.proto引用了google/protobuf/timestamp.proto等内置文件需要protoc -I protobuf安装目录/include指定搜索路径参考 examples/Makefile 的 Dart 示例。C 链接报错确认已安装 C 运行时库pkg-config --cflags protobuf能正常返回即可通过检查。进阶资源仓库里还有这些多语言完整示例examples/C、Python、Java、Go、Dart 各一套 add_person / list_people 程序各语言运行时说明src/README.mdC、python/Python、java/JavaCMake 构建指南cmake/README.md项目级 Bazel 构建文件参考examples/WORKSPACE、examples/MODULE.bazel按照本文流程从protoc --version到看到list_people打印出你录入的联系人10 分钟完全够用。接下来不妨把Person换成你自己业务里的数据结构——恭喜你已经迈出了 protobuf 序列化的第一步 【免费下载链接】protobufProtocol Buffers - Googles data interchange format项目地址: https://gitcode.com/GitHub_Trending/pr/protobuf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表