Protocol Buffers是Google开源的序列化库,具有平台无关,高性能,兼容性好等有点。它是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化/反序列化。由于Protocol Buffers具有以上的特点,所以它很适合做数据存储或RPC的数据交换格式,常用作通信协议、数据存储等领域的与语言无关、平台无关、可扩展的序列化结构数据格式。目前支持C++、Java、Python三种语言。在Google内部,几乎所有的RPC协议和文件格式都是采用Protocol Buffers。
Protocol Buffers优点:
1、平台无关、语言无关
2、高性能,解析速度是XML的很多倍
3、体积小
4、使用简单
5、兼容性好
编写Protocol Buffers步骤:
1、定义一个.proto格式的文件
2、使用Google提供的Protocol Buffers编译器生成特定语言(Java、C++、Python)的代码文件
3、使用Protocol Buffers提供的API来编写应用程序。
下面我们来一步一步安装Protocol buffers并创建Protocol buffers应用程序:
下载:
https://developers.google.com/protocol-buffers/docs/downloads
https://code.google.com/p/protobuf/downloads/list
源码:http://sourceforge.net/projects/protobuf/files/protobuf-2.6.0.zip/download
编译后应用文件:http://sourceforge.net/projects/protobuf/files/protoc-2.6.0-win32.zip/download
API :https://developers.google.com/protocol-buffers/docs/reference/java/index
jar : http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java/2.6.0
github : https://github.com/google/protobuf
利用eclipse创建一个工程protobuftest,并添加上面步骤下载的protobuf-java-2.6.0.jar的jar包
定义消息格式文件person.proto
假设我们的文件路径为E:/workspace-indigo/protobuftest/ProtoTest/src/person.proto该文件描述了通讯录中某个人的基本信息,内容如下:
package pro;
option java_package="com.lvcy.pro";
option java_outer_classname="PersonProtos";
message Persion{
required string name=1;
required int32 id=2;
optional string email=3;
message PhoneNumber{
required string number=1;
optional int32 type=2;
}
required PhoneNumber phone=4;
}
使用Google提供的Protocol Buffers编译器生成java语言
终端定位到项目的src目录下,如下所示:
然后再刷新之前创建的项目我们就可以看见生成了一个com.lvcy.pro包,里面定义了一个PersonProtos类,项目结构如下所示:
使用protocol buffers提供的API编写应用程序
该例子创建了一个Person实例,先将对象保存到文件test.txt中,之后从文件中输入再打印出来。
package com.lvcy.pro; import java.io.FileInputStream; import java.io.FileOutputStream; import com.lvcy.pro.PersonProtos.Persion; public class Program { public static void main(String[] args) throws Exception{ Persion persion=Persion.newBuilder().setName("Lvcy").setEmail("123456789@qq.com").setId(10) .setPhone(Persion.PhoneNumber.newBuilder().setNumber("12345678900").setType(1)).build(); FileOutputStream fileOutputStream=new FileOutputStream("test.txt"); persion.writeTo(fileOutputStream); FileInputStream inputStream=new FileInputStream("test.txt"); Persion persion2=Persion.parseFrom(inputStream); System.out.println(persion2); } }
输出:
name: "Lvcy"
id: 10
email: "123456789@qq.com"
phone {
number: "12345678900"
type: 1
}
参考:http://www.lvcy.net/?post=164
相关推荐
4. **自定义编解码器**:在实际应用中,可能需要编写自定义的编解码器来处理特定的 Protocol Buffers 消息类型。课程可能介绍如何编写和集成这些自定义组件到 Netty 的管道(Pipeline)中。 通过这两个课程的学习,...
Protocol Buffers是谷歌开发的一种高效的数据序列化协议,它允许开发者定义数据结构(.proto文件),然后将这些结构转换为各种语言的源代码,以便在应用程序之间进行高效的数据交换。相比JSON或XML,Protocol ...
易语言ProtoBuf支持库(普通版)1.0版是一个专为易语言设计的扩展库,用于集成Google的Protocol Buffers(简称ProtoBuf)技术。ProtoBuf是一种序列化协议,可以将结构化的数据序列化,方便地进行网络传输、持久化...
3. **Protocol Buffers**: `caffe.pb.h`是由Google的Protocol Buffers工具生成的,它允许Caffe以结构化的方式存储和读取网络配置、模型权重和其他数据。BlobProto、Datum和NetParameter等协议消息定义了Caffe的数据...
总之,"awesome-grpc"资源列表是gRPC开发者的一份宝贵财富,它涵盖了从入门到进阶的所有方面,无论是新手还是经验丰富的开发者,都能从中找到所需的信息和灵感,提升gRPC应用的设计和开发能力。
而Protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,它能将结构化数据序列化,可用于数据存储、通信协议等方面,其效率和灵活性都优于XML和JSON。 首先,让我们深入理解Netty。Netty的核心是它的...
标题 "golang_grpc.zip" 提供的是一个用于搭建 Go 语言环境的 gRPC 工具包,这个包...通过这个 golang_grpc.zip 文件,开发者可以快速入门 gRPC 和 Protobuf 在 Go 中的应用,为构建高效、可靠的微服务架构奠定基础。
Louie利用谷歌的Protocol Buffers作为通用对象,通过在Python中自动生成对应的客户端,你可以创建一个高效的基于多语言服务的API。 入门 第 1 步:并Google 的 Protocol Buffers (protobuf) 第 2 步:阅读 第 3 步...
protobuf(Protocol Buffers)是一种灵活、高效、自动化的结构化数据序列化方法,它不仅限于特定的编程语言或平台,可以在不同的环境中实现数据交换。相比于传统的数据序列化方法,如XML、JSON等,protobuf具有更高...
Protobuf(Protocol Buffers)是Google推出的一种数据序列化协议,类似于XML和JSON,但更紧凑、更快、更简单。它允许定义数据结构,然后生成能够在各种语言中使用的代码,以便轻松地序列化和反序列化数据。Protobuf...
标题 "grpc protobuf windows vs2015" 涉及的是在Windows环境下,使用Visual Studio 2015(VS2015)开发基于gRPC和Protocol Buffers(protobuf)的应用程序。gRPC是一个高性能、开源和通用的RPC框架,而protobuf是...
二进制格式包括 Protocol Buffers、MessagePack、Avro 等。数据库包括 MySQL、PostgreSQL、MongoDB 等。 六、动态网页爬取 动态网页爬取是爬虫技术的重要难点,包括 Selenium 工具介绍、PhantomJS 工具介绍等。...
而Protobuf(Protocol Buffers)作为一种高效的序列化协议,被广泛用于数据交换,它比XML或JSON更紧凑、更快。本篇文章将深入探讨如何利用SuperSocket和Netty实现Protobuf协议,并提供一个简单的快速入门指南。 ...
gRPC是一个高性能的远程过程调用(RPC)框架,它使用HTTP/2作为传输层协议,并且使用Protocol Buffers作为接口描述语言。文档提到如何开始使用gRPC服务,并强调了与C#客户端的集成。同时也覆盖了安全性、身份验证和...
7. Protobuf 协议传输:Protocol Buffers(Protobuf)是 Google 开发的一种数据序列化协议,可以用于高效地存储和交换数据。Netty 提供了 ProtobufVarint32FrameDecoder 和 ProtobufDecoder 等组件,方便在 Netty ...
GRPC 是一个高性能、开源和通用的 RPC 框架,它基于 Google 的 Protocol Buffers (protobuf) 进行序列化和接口定义。这个压缩包包含了一个简单的客户端(Client)和服务器(Server)通信的例子,名为 "helloworld",...