【protobuf】ProtoBuf——快速上手protobuf、创建.proto文件、编译.proto文件、序列化与反序列化的使用

ProtoBuf

在这里插入图片描述

  

4. 快速上手protobuf

  我们在上一节学习了 Protobuf 的基本概念,所以现在我们小试牛刀一下,我们将编写基于protobuf实现的通讯录。在这个通讯录1.0 版本中,会实现以下功能:

  (1)联系人涵盖以下信息:姓名、年龄。

  (2)运用 PB 对一个联系人的信息进行序列化,并将所得结果予以打印。

  (3)针对序列化后的内容,使用 PB 执行反序列化操作,解析出联系人的信息并进行打印。

  通过通讯录 1.0,我们能够知晓使用 ProtoBuf 初步需掌握的要点,同时亲身体验到 ProtoBuf 的完整使用流程。

  

4.1 创建.proto文件

  .proto文件是什么?

  .proto 文件是 Protocol Buffers(简称 Protobuf)中用于定义数据结构的文件。

  它使用特定的语法来描述数据的格式和字段信息。通过在 .proto 文件中定义 message ,可以明确数据包含的字段、字段的数据类型(如 int32 、 string 等)以及一些属性(如 required 、 optional 等)。

  简单来说:就是我们期望用于客户端和服务端之间进行传递的信息(.proto用结构体定义)。

  

  命名规范:

  创建 .proto 文件时,文件命名应该使用全小写字母命名,多个字母之间用 _ 连接。 例如:lower_snake_case.proto 。

  书写 .proto 文件代码时,应使用 2 个空格的缩进。

  添加注释:向文件添加注释,可使用 // 或者 / * … * / 优化文档。

  

  指定 proto3 语法:

  Protocol Buffers 语言版本 3,简称 proto3,乃是.proto 文件的最新语法版本。

  proto3 对 Protocol Buffers 语言予以了简化,不仅易用,而且能够在更为广泛的编程语言中得以运用。它支持您使用 Java、C++、Python 等众多语言生成 protocol buffer 代码。

  在.proto 文件里,需通过 syntax = "proto3"; 来指定文件语法为 proto3,并且此语句必须置于除去注释内容后的第一行。倘若未进行指定,编译器将会采用 proto2 语法。

  使用内容如下:

syntax = "proto3";

  

  package 声明符:

  package 是一个可选的声明符,用于表示 .proto 文件的命名空间。在项目中,package 应当具有唯一性,其主要作用在于避免我们所定义的消息产生冲突。

syntax = "proto3";
package contacts;

  

  定义消息(message):

  消息(message):它是要定义的结构化对象,我们能够为这个结构化对象设定其相应的属性内容。

  
  这里再谈一下为何要定义消息?

  在网络传输中,我们需要为传输的双方制定协议。所谓定制协议,直白地说就是定义结构体或者结构化数据,例如,tcp、udp 报文就是结构化的。

  再比如,在将数据持久化存储到数据库时,会把一系列元数据统一用对象组织起来,然后再进行存储。

  message内容如下:

syntax = "proto3";
package contacts;

// 定义联系⼈消息
message PeopleInfo {
   
    
    
	// 自定义信息
}

  

  定义消息字段:

  在 message 中我们可以定义其属性字段,字段定义格式为:字段类型 字段名 = 字段唯一编号;

  
  字段名称命名规范:采用全小写字母,多个字母之间用 _ 连接。例如:first_name 、 last_name 。

  字段类型分为:标量数据类型 和 特殊类型(包括枚举、其他消息类型等)。标量

猜你喜欢

转载自blog.csdn.net/Crocodile1006/article/details/141230472