c++中使用protobuf进行序列化

本文介绍了C++中使用protobuf进行序列化的详细过程,包括为什么需要序列化、protobuf的操作流程,以及如何在.proto文件中定义消息格式、使用repeated限定修饰符、枚举等。还讲解了在VS中配置protobuf的步骤,强调了protobuf在数据传输效率和灵活性方面的优势。
摘要由CSDN通过智能技术生成

目录

 

序列化定义:

为什么需要进行序列化?

序列化的过程

c++中常见的序列化方式

protobuf的操作流程

protobuf的使用举例

(1)在.proto文件中定义消息格式

(2)repeated限定修饰符

(3)枚举

(4)proto文件的导入

(5)包 -> 命名空间

(6)使用protobuf编译器生成C++类

(7)vs配置 -> 添加宏


序列化定义:

就是将对象的状态信息转换为可以存储或传输的形式的过程,说白了,就是将对象以值的形式进行转换成可以存储或者传输的方式。

为什么需要进行序列化?

在不同的进程之间可能会需要进行对象的传递,为了解决在跨平台和跨语言的情况下,模块之间的交互和调用,其实就是为了解决数据传输问题。序列化的目的不是为了加密,而是为了数据的跨平台传输。

序列化的过程

发送端:

原始数据->序列化(编码)->特殊格式的字符串

发送字符串

接收端:

接受数据

特殊格式的字符串->反序列化(解码)->原始数据

对原始数据进行处理

c++中常见的序列化方式

(1)google protobuf

(2)json,其本质是采用“键值对”的方式来描述对象,相对于xml而言,序列化后的数据更加简洁,而且其协议比较简单,解析速度比较快。

(3)xml,具有跨机器,跨语言等特点,当这种标记文档的设计被用来序列化对象的时候,就显得冗长而复杂。

其中后两种的序列化之后的数据都比较大,而protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问protobuf的google官方网站。

protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。

protobuf的优点:
(1)灵活(方便接口更新)、高效(效率经过google的优化,传输效率比普通的XML等高很多);
(2)易于使用;开发人员通过按照一定的语法定义结构化的消息格式&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值