`

Protocol Buffers 入门应用

阅读更多

    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

 

 

 

  • 大小: 23.4 KB
  • 大小: 9.3 KB
分享到:
评论

相关推荐

    netty快速入门教程7-8集 共12集

    4. **自定义编解码器**:在实际应用中,可能需要编写自定义的编解码器来处理特定的 Protocol Buffers 消息类型。课程可能介绍如何编写和集成这些自定义组件到 Netty 的管道(Pipeline)中。 通过这两个课程的学习,...

    gRPC详细入门教程,GolangPythonPHP多语言讲解.pdf

    Protocol Buffers是谷歌开发的一种高效的数据序列化协议,它允许开发者定义数据结构(.proto文件),然后将这些结构转换为各种语言的源代码,以便在应用程序之间进行高效的数据交换。相比JSON或XML,Protocol ...

    易语言ProtoBuf支持库 (普通版)1.0版(eProtoBuf.fne)-易语言

    易语言ProtoBuf支持库(普通版)1.0版是一个专为易语言设计的扩展库,用于集成Google的Protocol Buffers(简称ProtoBuf)技术。ProtoBuf是一种序列化协议,可以将结构化的数据序列化,方便地进行网络传输、持久化...

    caffe源代码解析(入门资料).docx

    3. **Protocol Buffers**: `caffe.pb.h`是由Google的Protocol Buffers工具生成的,它允许Caffe以结构化的方式存储和读取网络配置、模型权重和其他数据。BlobProto、Datum和NetParameter等协议消息定义了Caffe的数据...

    awesome-grpc:精选的gRPC有用资源列表

    总之,"awesome-grpc"资源列表是gRPC开发者的一份宝贵财富,它涵盖了从入门到进阶的所有方面,无论是新手还是经验丰富的开发者,都能从中找到所需的信息和灵感,提升gRPC应用的设计和开发能力。

    netty+protobuf入门案例

    而Protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,它能将结构化数据序列化,可用于数据存储、通信协议等方面,其效率和灵活性都优于XML和JSON。 首先,让我们深入理解Netty。Netty的核心是它的...

    golang_grpc.zip

    标题 "golang_grpc.zip" 提供的是一个用于搭建 Go 语言环境的 gRPC 工具包,这个包...通过这个 golang_grpc.zip 文件,开发者可以快速入门 gRPC 和 Protobuf 在 Go 中的应用,为构建高效、可靠的微服务架构奠定基础。

    louie:Louie - 一个服务网络框架

    Louie利用谷歌的Protocol Buffers作为通用对象,通过在Python中自动生成对应的客户端,你可以创建一个高效的基于多语言服务的API。 入门 第 1 步:并Google 的 Protocol Buffers (protobuf) 第 2 步:阅读 第 3 步...

    protobuf入门

    protobuf(Protocol Buffers)是一种灵活、高效、自动化的结构化数据序列化方法,它不仅限于特定的编程语言或平台,可以在不同的环境中实现数据交换。相比于传统的数据序列化方法,如XML、JSON等,protobuf具有更高...

    netty+protobuf入门案例.

    Protobuf(Protocol Buffers)是Google推出的一种数据序列化协议,类似于XML和JSON,但更紧凑、更快、更简单。它允许定义数据结构,然后生成能够在各种语言中使用的代码,以便轻松地序列化和反序列化数据。Protobuf...

    grpc protobuf windows vs2015

    标题 "grpc protobuf windows vs2015" 涉及的是在Windows环境下,使用Visual Studio 2015(VS2015)开发基于gRPC和Protocol Buffers(protobuf)的应用程序。gRPC是一个高性能、开源和通用的RPC框架,而protobuf是...

    Python爬虫技术入门到高级第五章

    二进制格式包括 Protocol Buffers、MessagePack、Avro 等。数据库包括 MySQL、PostgreSQL、MongoDB 等。 六、动态网页爬取 动态网页爬取是爬虫技术的重要难点,包括 Selenium 工具介绍、PhantomJS 工具介绍等。...

    SuperSocket.ClientEngine.QuickStart.zip

    而Protobuf(Protocol Buffers)作为一种高效的序列化协议,被广泛用于数据交换,它比XML或JSON更紧凑、更快。本篇文章将深入探讨如何利用SuperSocket和Netty实现Protobuf协议,并提供一个简单的快速入门指南。 ...

    NetCore.pdf

    gRPC是一个高性能的远程过程调用(RPC)框架,它使用HTTP/2作为传输层协议,并且使用Protocol Buffers作为接口描述语言。文档提到如何开始使用gRPC服务,并强调了与C#客户端的集成。同时也覆盖了安全性、身份验证和...

    Netty4的一些技术栈示例代码并辅以博文讲解

    7. Protobuf 协议传输:Protocol Buffers(Protobuf)是 Google 开发的一种数据序列化协议,可以用于高效地存储和交换数据。Netty 提供了 ProtobufVarint32FrameDecoder 和 ProtobufDecoder 等组件,方便在 Netty ...

    利用grpc实现的c\s通信例子,官网helloworld实例代码

    GRPC 是一个高性能、开源和通用的 RPC 框架,它基于 Google 的 Protocol Buffers (protobuf) 进行序列化和接口定义。这个压缩包包含了一个简单的客户端(Client)和服务器(Server)通信的例子,名为 "helloworld",...

Global site tag (gtag.js) - Google Analytics