[ProtoBuf]定义ProtocolBuffer消息

本文介绍了Protocol Buffers,一种序列化数据的高效、灵活解决方案。它允许定义数据结构,然后生成类来实现自动编码和解码。Protocol Buffers支持跨语言,如Java、C++、Python等,具有小而快的编码/解码速度,且具有版本兼容性。文中还讲解了.proto文件中的关键元素,包括message、enum、field修饰符、default值、tag和数据类型。
摘要由CSDN通过智能技术生成

为什么使用Protocol Buffers

一个非常简单的 “address book” 应用例子,它可以从文件读取和向文件写入人们的联系人详情。地址簿中的每个人具有一个名字 (name)ID,电子邮件地址 (email address),和联系人电话号码 (contact phone)你要如何序列化和提取这样的结构化数据呢?有一些方法可以解决这个问题: 

原始的内存数据结构可以以二进制的形式发送/保存。随着时间的流逝,这是一种脆弱的方法,因为接收/读取的代码必须以完全相同的内存布局、尾端等等编译。此外,随着文件以原始的格式累积数据及处理那种格式的软件的复制,那种格式被不断传播,则它是非常难以扩展的格式。

你可以发明一种特别的方式来将数据项编码编码为一个字符串 —— 比如将4int值编码为”12:3:-23:67”。这是一个简单而灵活的方法,尽管它需要编写一次性的编码和解析代码,而且解析消耗一小段运行时代价。这对于编码非常简单的数据是最好的方式。

将数据序列化为XML这种方法可能非常具有吸引力,因为XML(有点) 人类可读的,而且它有大量编程语言的bindings库。如果你想要与其它的应用/项目共享数据的话,这可能是一个很好的选择。然而,XML是臭名昭著的空间密集,而且编码/解码它需要消耗应用大量的性能开销。而且,浏览一个XML DOM树也被认为比通常浏览类中的简单字段更复杂。

Protocol buffers是解决这个问题灵活,高效,自动化的方案。通过 Protocol buffers ,你可以编写一个 .proto 描述你想要存储的数据结构。通过它, Protocol buffers 编译器创建一个类,以一种高效的二进制格式实现自动的编码和解析 Protocol buffers 数据。生成的类为构成一个 Protocol buffers 的字段提供了getterssetters方法,并处理读取和写入 Protocol b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值