tnblog
首页
视频
资源
登录

ProtoBuf简介

6061人阅读 2020/5/10 16:57 总访问:825375 评论:2 收藏:0 手机
分类: 后端

在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,而在最近的开发中接触到了 Google 的 ProtoBuf。

在查阅相关资料学习 ProtoBuf 以及研读其源码之后,发现其在效率、兼容性等方面非常不错。在以后的项目技术选型中,尤其是网络通信、通用数据交换等场景应该会优先选择 ProtoBuf。

何为 ProtoBuf

我们先来看看官方文档给出的定义和描述:

protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。

Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。

简单来讲, ProtoBuf 是结构数据序列化方法,可简单类比于 XML,其具有以下特点:

  • 语言无关、平台无关。即 ProtoBuf 支持 Java、C++、Python 等多种语言,支持多个平台
  • 高效。即比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单
  • 扩展性、兼容性好。你可以更新数据结构,而不影响和破坏原有的旧程序

序列化:将结构数据或对象转换成能够被存储和传输(例如网络传输)的格式,同时应当要保证这个序列化结果在之后(可能在另一个计算环境中)能够被重建回原来的结构数据或对象。
更为详尽的介绍可参阅 维基百科。

类比于 XML:这里主要指在数据通信和数据存储应用场景中序列化方面的类比,但个人认为 XML 作为一种扩展标记语言和 ProtoBuf 还是有着本质区别的。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

是伍尚金哇_v

2020/11/16 9:15:11

我们自动化物流系统好像就是用的这玩意做通信协议[嘻嘻]

2020/11/17 16:54:41 回复

ProtoBuf 简单使用

创建.proto文件,定义数据结构 message MyExample{ optional string stringVal =1; optional bytes bytesVal =2...

Java学习 - Java语言简介

java语言简介1.了解java产生的背景2.了解java体系结构和组成3.了解Java API文档的使用4.搭建java语言的开发环境(重点)5....

Maven的简介和安装配置

简介Maven 是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念。Maven 是一个项目管理工具,主...

grpc简介

gRPC简介gRPC gRPC来自 Google,它是一个开源的框架;它同时也是 Cloud Native Computation基金会(CNCF的一部分,就像 Docker...

CQRS架构简介

CQRS架构简介前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海...

Elasticsearch Request Body与Query DSL简介

Elasticsearch Request Body与Query DSL简介[TOC] Request Body Search 将查询语句通过 HTTP Resquest Body 发送给 Ela...

EF Core 简介

Entity Framework Core 简介 今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简...

Elasticsearch 聚合分析简介

Elasticsearch 聚合分析简介[TOC] 什么是聚合(Aggregation) 聚合:对有关的数据进行内容挑选、分析、归类(筛选),最...

.net core简介

由于 .NET Core 的开发目标是跨平台的 .NET 平台,因此 .NET Core 会包含 .NET Framework 的类库,但与 .NET Framework 不...

Ansible 安装与简介

Ansible 安装与简介[TOC] Ansible简介 Ansible是您安装在控制节点上的无代理自动化工具。Ansible从控制节点远程管理计算...

Jenkins Pipeline简介与安装

Jenkins Pipeline简介与安装[TOC] Pipeline简介概念Pipeline,简单来说,就是一套运行在Jenkins上的工作流框架,将原来独立...

JDBC简介 1

一、概念

Linx 操作系统的简介

1、2、3、4、5、来源:黑马程序员视频

红黑树-简介和添加节点的默认颜色 06

一、红黑树红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。1972年出现,当时被称之为平衡二叉B树。后...

IoC简介 01

耦合与内聚耦合(Coupling):代码书写过程中所使用技术的结合紧密度,用于衡量软件中各个模块之间的互联程度内聚(Cohesion):...
这一生多幸运赶上过你.
排名
8
文章
222
粉丝
7
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术