Protobuf系列-1-安装

Posted by AlstonWilliams on February 17, 2019

由于感觉官网上的介绍也比较模糊,所以在自己操作成功后,就把它记录下来.

Protobuf介绍

官网上介绍的很简单,就是一个Google内部通用的数据交换格式.我们也知道一些数据交换格式,比如,JSON,XML等.

那么为什么Google还要提出Protobuf这种格式呢?因为JSON,XML等格式虽然是对人类非常友好的,但是效率并不高.

简单来说,它就是一种数据交换格式.

Protobuf编译器安装

由于在使用Protobuf时,是需要我们编写一个proto文件,然后通过一个编译器将其编译成我们需要的格式的文件,比如,对我来说,就要编译成Java格式的文件.

所以,我们需要安装这么一个编译器.

我们来这里下载一个protoc-version-your_platform.zip文件,然后解压并添加到PATH这个环境变量里就行了.

然后安装完成之后,通过protoc –version,能够输出对应的版本,就表示成功了.

Protoc的使用

我们上面说过,我们需要写一个通用的proto文件,然后通过Protoc编译器编译成我们想要的语言的文件,然后再操纵这些文件.

那我们如何来做呢?

首先,我们编写一个proto文件,

syntax = "proto3";

package com.project;

option java_package = "com.projecthome";
option java_multiple_files = true;
option java_outer_classname = "AddressBookProtos";

message Person {

    string name = 1;
    int32 id = 2;
    string email = 3;

    enum PhoneType {
        MOBILE = 0;
        HOME = 1;
        WORK = 2;
    }

    message PhoneNumber {

        string number = 1;
        PhoneType type = 2;

    }

    repeated PhoneNumber phones = 4;

}

message AddressBook {

    repeated Person people = 1;

}

最上面的syntax = “proto3”表示我们这个proto文件的版本,目前有proto2proto3两种版本.

这两种版本的语法,并不完全一样,proto3的比proto2更简洁,你在下载protoc时,也要注意跟这个版本对应.

关于这两种版本的细节,请移步这里

然后,我们可以通过protoc –java_out=${your_output_directory} your_proto_file来编译这个proto文件.我们可以看到,我们编译成的是Java文件.

编译完成后,在${your_output_directory}/com/projecthome下面,可以看到,生成了几个Java文件.

总结

在这篇文章中,我们介绍了如何安装protoc以及编译proto文件.

关于如何在项目中使用这些编译出的文件,我们会在下一篇文章中介绍.