授权协议 BSD
开发语言 Java C/C++ Python
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织 Google
地区 不详
投 递 者 JavaGG
适用人群 未知
收录时间 2009-11-18

软件简介

Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种编程语言。

为什么不只用XML?同XML相比,Protocol buffers在序列化结构化数据方面有许多优点(google官方提出):

  • 更简单

  • 数据描述文件只需原来的1/10至1/3

  • 解析速度是原来的20倍至100倍

  • 减少了二义性

  • 生成了更容易在编程中使用的数据访问类

google大概是今天(08年7月8号)将其作为开源项目对外公布,说是后续还要开源的项目有不少都会用到Protocol Buffers。

展开阅读全文

代码

评论 (4)

加载中
该评论暂时无法显示,详情咨询 QQ 群:912889742
很方便 不错 Protocol Buffers
2013/10/29 17:40
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
2015/12/29 22:59
回复
举报
更多评论
02/20 07:06

Protocol Buffers 3.15.0 发布

Protocol Buffers 3.15.0 已经发布。Protocol Buffers(protobuf)是 Google 开源的语言无关、平台无关的可扩展机制,用于序列化结构化数据。此次更新亦是其 2021 年的第一次正式版本。 部分更新内容 编译器 默认启用 proto3 的可选字段,不再需要 --experimental_allow_proto3_optional 标志 c++ MessageDifferencer:修复了使用多个自定义忽略时的错误 在 MSVC 中使用 init_seg 以更早开始初始化 运行时不再触发 -Wsign-compa...

0
3
发表于大前端专区
2020/03/10 08:16

Protocol Buffers 引入新的 Go API,并无限期支持旧版本

Go 团队宣布推出 Protocol Buffers 新的 Go API(APIv2),并表示这是一个重要的修订版本。APIv2 主要提供了反射(Reflection)功能,开发者通过它能够检测 Protocol Buffers 类型系统的数值,但由于官方变更了 Message 的类型定义,因此 API 的新旧版本不兼容。 Protocol Buffers 是谷歌开发的语言无关的数据交换格式,也是序列化结构数据的扩充机制,与 XML 类似,但是更小更简单。 构建新 API 的动机 Go 的首个 Protocol Buf...

1
10
发表了资讯
2017/09/21 07:48

Protocol Buffers 3.4.1 发布,Google 数据交换格式

Protocol Buffers 是 Google 开源的一种数据交换格式,采用简单的二进制格式,比 XML、JSON 格式体积更小,编码解码效率更高,可用于数据存储、通信协议等方面。 Protocol Buffers 目前支持 Java、Python、Objective-C 、C ++、Go、JavaNano、Ruby 和 C# 。 Protocol Buffers 3.4.1 是一个 bug 修复版本: 修复 3.4.0 压缩文件中缺少的文件( Windows 和 cmake 用户受此影响) C#: 修复 dotnet target platform 再次变成 net4...

3
20
发表了资讯
2016/09/26 00:00

Protocol Buffers 3.1.0,PHP 支持 Proto3 协议

Protocol Buffers 3.1.0发布了,该版本主要更新以下内容: PHP(Alpha)已支持Proto3协议 修复了一些bug 发行说明和下载地址: https://github.com/google/protobuf/releases/tag/v3.1.0 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。...

4
16
发表了资讯
2016/07/30 00:00

Protocol Buffers 3.0 稳定版发布

Protocol Buffers 3.0 发布,该版本与上一个稳定版 2.6.1 版本比较,主要改进包括: 全面的 3.0 协议版本 proto3: 废弃 optional 关键字 Removed non-zero default values and field presence logic for non-message fields. Group fields are no longer supported in proto3 syntax. Changed repeated primitive fields to use packed serialization by default in proto3 (implemented for C++, Java, Python in this releas...

17
47
发表了资讯
2014/12/16 00:00

Google Protocol Buffers v3.0.0-alpha-1 发布

Google Protocol Buffers v3.0.0-alpha-1 发布,新特性包括: Removal of field presence logic for primitive value fields, removal of required fields, and removal of default values. This makes proto3 significantly easier to implement with open struct representations, as in languages like Android Java, Objective C, or Go. Removal of unknown fields. Removal of extensions, which are instead replaced b...

9
14
发表了资讯
2014/09/27 00:00

Protocol Buffers 2.6.0 发布

Protobuf 2.6.0 发布,此版本现已提供下载,更新内容如下: 常规更新 添加 oneofs(unions) 功能。Fields in the same oneof will share memory and at most one field can be set at the same time. Use the oneof keyword to define a oneof like: message SampleMessage {   oneof test_oneof {     string name = 4;     YourMessage sub_message = 9;   } } Files, services, enums, messages, metho...

4
29
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2019/07/24 04:10

Protocol Buffers 简介

文档编辑和持续集成状态: 本文档的 Protocol Buffer 的中文文档使用的是 Asciidoctor 进行编排的 http://docs.ossez.com/protocol-buffers-docs/index.html(本 WIKI 中的内容将会与在线发布的版本同步) Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。 Protocol Buffer 相关快速导航 链接名称 链接地址 Prot...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于运维专区
2019/12/12 16:49

这个代码不全吧,是不是有代码没上传完

这个代码不全吧,是不是有很多代码没上传吧,比如如下这些类: io.seata.codec.protobuf.generated.AbstractBranchEndRequestProto; io.seata.codec.protobuf.generated.AbstractMessageProto; io.seata.codec.protobuf.generated.AbstractTransactionRequestProto; io.seata.codec.protobuf.generated.BranchRollbackRequestProto; o.seata.codec.protobuf.generated.BranchTypeProto; io.seata.codec.protobuf.generated.Mess...

1
0
2018/12/19 11:12

使用protobuf 编码传输中文出现乱码

a

2
0
发表了问答
2017/11/14 16:49

Protostuff序列化问题

class ChatRoom {   /** 房间成员 */   private Set<Integer> pids = Sets.newHashSet();   public Set<Integer> getPids() {     return pids;   }   public void setPids(Set<Integer> pids) {     this.pids = pids;   }    } public class App {   public static void main(String[] args) throws Exception {     byte[] bytes = SerializationUtil.serialize(new ChatRoom());          ChatRoom room = SerializationUtil.deserialize(by...

3
0
发表了问答
2017/02/21 09:34

protobuf 3 对接java属性问题

proto3.X生成java文件时,proto文件想表示Class[]以及Object[]这样的属性时,怎么定义啊?

5
0
发表了问答
2016/03/17 10:59

困扰了一个月,实在试过很多方法,到底怎么编译protobuf arch64啊

ios用,真有能在mac上编译的方法么

1
0
发表了问答
2016/08/26 19:01

关于protobuffer 的js版本使用方式

在通讯时,需要使用的protobuffer,目前有两种客户端,一个是在游戏桌面端,和服务器交互,使用的是protobuffer,现在需要在websocket前端客户端也添加protobuffer,网上看到个js版本,不太好使!希望接触过的同僚们,能给些建议,没接触过的,想了解下的,顶起谢谢!

4
0
发表了问答
2015/04/30 17:35

谁有使用Google的开源技术protobuf的Java程序例子?

谁有使用Google的开源技术protobuf的Java程序例子?

1
0
发表了问答
2016/05/11 00:59

[50元话费问题解决]ios oc/swift 使用cocoaasyncsocket 交互 Netty Protobuf的服务器的Demo?

最好是Swift 2.2的Demo, OC的也行。刚接触IOS不太熟,希望各位赐教!谢谢!

1
0
发表了问答
2015/09/02 16:21

Netty 4.x处理多个protobuf协议

@_beaman 你好,想跟你请教个问题: 你好 netty 4.x 处理多个protobuf协议 请问你这个问题解决了吗 ? 方便把你的解决方案(相关代码) 发我下么, 我的邮箱 823803676@qq.com 谢谢大哥

1
0
发表了问答
2016/02/24 11:13

懂Netty的请帮帮我,我使用Netty+Protobuf来实现信息编码解码,如何区分不同的信息调用相应解码

懂Netty的请帮帮我,我使用Netty+Protobuf来实现信息编码解码,如何区分不同的信息调用相应解码 想法是这样的 。 一个a.proto负责处理用户发送图片的请求,一个b.proto负责处理用户的文本消息 但是要如何根据不同的信息调用不同的解码呢?Netty我看到的大部分都是只有一个ProtobufDecoder负责一个解码。我希望能够根据不同的信息调用相应解码。请问该怎么做?

5
0
发表了问答
2010/11/21 23:50

[IBM DW] Google Protocol Buffer 的使用和原理

什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换...

6
19
发表了问答
2014/06/06 14:27

protobuf 序列化 c++

大家好,请问大家一个protobuf序列化的问题,我用的pb版本是2.5.0,问题是: 生成的头文件里面只有一个SerializeWithCachedSizes方法,我想把这个类序列化成字节数组,通过网络发送出去,网上pb教程中不少提到了SerializeToArray方法,很符合我的要求,为什么我的头文件中没有这个方法呢?首次使用pb,还不是很熟悉,如果可以解决,请您尽量附上完整代码,小弟在此谢过了!!! proto文件如下: package ddz.proto; option...

1
0
发表了问答
2010/07/28 09:42

protobuf在网络编程中的应用思考

protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c++、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。...

2
4
发表了问答
2012/09/01 16:30

protobuf 根据类名直接生成Java对象

Message* createMessage(const std::string& typeName) { Message* message = NULL; const Descriptor* descriptor = DescriptorPool::generated_pool()->FindMessageTypeByName(typeName); if (descriptor) { const Message* prototype = MessageFactory::generated_factory()->GetPrototype(descriptor); if (prototype) { message = prototype->New(); } } return message; } 上面这断代码...

5
0
发表了问答
2011/02/23 16:01

关于GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFF宏的问题

宏GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFF在google protobuf中用于计算类中成员变量的偏移量,提供类似C语言中offsetof宏的功能。根据C++的规定,对于公有成员变量可以使用宏的方法获取其偏移量;但是在google protobuf生成的C++代码中用该宏计算私有成员变量的偏移量,想问一下诸位,有谁能具体解释一下google protobuf具体是怎么实现的?是不是通过某种方式欺骗了编译器?...

1
1
发表了问答
2013/03/04 15:06

几种 Java 序列化方案的性能比较

来源:https://github.com/eishay/jvm-serializers/wiki 比较结果: create ser deser total size +dfl java-built-in 62 5608 29649 35257 889 514 hessian 65 3812 6708 10519 501 313 kryo 65 588 814 1403 214 134 protostuff-runtime 64 651 856 ...

5
34
发表了问答
2013/07/07 11:06

protobuf复杂结构如何使用?

我有以下一个结构,要进行网络传输: message NewCallInfoReq { required string custom=1; required string bindPhone=2; required string callPhone=3; required string lsh=4; required Contact ctt=5; //Contact message optional Account act=6; //Account message optional Case cs=7; //Case message } 在给对端发送先要先给这个NewCallInfoReq newReq;赋包含的几个message的值 Account at;// at.set_id(cmd->Param("ac...

4
0
发表了问答
2013/06/07 16:12

go语言中关于protobuf的问题

@chai2010 你好,想跟你请教个问题:go语言关于protobuf的问题的,我发现编译出的文件中有 import proto "code.google.com/p/goprotobuf/proto" import json "encoding/json" import math "math" // Reference proto, json, and math imports to suppress error if they are not otherwise used. var _ = proto.Marshal var _ = &json.SyntaxError{} var _ = math.Inf 是不是说明传输协议中用json方式传输呢??谢谢...

2
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
4 评论
369 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部