Toggle Navigation
首页
Golang
PHP
Laravel
Magento
Linux
数据库
MySQL
Redis
Mongodb
热门知识
程序与生活
架构师之路
静态站点
GitHub
主页
Protocol Buffer简介
Protocol Buffer简介
07-19
Mark
422
#### 一、什么是Protocol Buffer? 什么是Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。最新的protobuf提供了 C++、Java、Python、PHP、Objective-C、C#、Ruby、Javascript 八种语言的 API。 #### 二、Protocol Buffer的优点 Protobuf 有如 XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。只需使用 Protobuf 对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对你的结构化数据轻松读写。 它有一个非常棒的特性,即“向后”兼容性好,人们不必破坏已部署的、依靠“老”数据格式的程序就可以对数据结构进行升级。这样您的程序就可以不必担心因为消息结构的改变而造成的大规模的代码重构或者迁移的问题。因为添加新的消息中的 field 并不会引起已经发布的程序的任何改变。 Protobuf 语义更清晰,无需类似 XML 解析器的东西(因为 Protobuf 编译器会将 .proto 文件编译生成对应的数据访问类以对 Protobuf 数据进行序列化、反序列化操作)。 使用 Protobuf 无需学习复杂的文档对象模型,Protobuf 的编程模式比较友好,简单易学,同时它拥有良好的文档和示例,对于喜欢简单事物的人们而言,Protobuf 比其他的技术更加有吸引力。 #### 三、Protocol Buffer的不足 Protbuf 与 XML 相比也有不足之处。它功能简单,无法用来表示复杂的概念。 XML 已经成为多种行业标准的编写工具,Protobuf 只是 Google 公司内部使用的工具,在通用性上还差很多。 由于文本并不适合用来描述数据结构,所以 Protobuf 也不适合用来对基于文本的标记文档(如 HTML)建模。另外,由于 XML 具有某种程度上的自解释性,它可以被人直接读取编辑,在这一点上 Protobuf 不行,它以二进制的方式存储,除非你有 .proto 定义,否则你没法直接读出 Protobuf 的任何内容。
最新文章
Golang内存问题处理
WebSocket详解
Gopher面试中的Coding(三)
Golang用os/signal包实现平滑重载配置文件
Nginx实现负载均衡的几种方式
Golang中子goroutine与主协程同步的四种实现
Dockerfile文件详解
Golang开发微信公众号
最热文章
Magento实现下载csv数据表格
1323
Magento上传文件、缩略图和导出CSV
1237
Laravel带有条件搜索的分页
1147
Magento优化 – MySQL读写分离
1099
Magento后台添加rule规则
1051
Magento常用模块分享
867
Magento 建立自己的shell命令
810
10个实用的PHP正则表达式
798
热门标签
下载
上传
导出
laravel分页
读写分离
rule
规则
模块
shell
正则
Collection
binlog
命名空间
微信公众号
Git
解锁
锁表
string
处理
composer
事务处理
读写
架构
系统
表分割
redis sentinel
函数
time
日志分析
进阶
事务处理
缓存
package
交叉编译
schedule
HTTPS
fmt
golang
channel
事务
分布式锁
日志过滤
日志分割
mongodb
git服务器
gogs
多数据库
Dockerfile
json
php
protobuf
版本号
concat
发展方向
Gopher面试
get
post
goroutine
负载均衡
重载配置
rpc
算法
模型关系
laravel
mongodb
docker
elasticsearch
golang算法
写文件
defer
panic
redis
代码部署
主从配置
curl
Dataflow
package
Shell
生成插件
直接下载
并发
量级
protobuf
数据类型
参数
错误传递
队列
Go指针
成长
方法
websocket
grpc
路上
风景
protobuf
Redis持久化
yum
内存泄漏