2013-03-14 179 views
2

我看了很多教程,但我不明白如何使用协议缓冲区如何使用协议缓冲区?

为什么“消息用户”?为什么不“上课用户”?以及Eclipse如何创建这样的消息? 以及为什么name = 2?没有NAME = “最大”

ption java_outer_classname="ProtoUser"; 

message User { 

    required int32 id = 1; // DB record ID 
    required string name = 2; 
    required string firstname = 3; 
    required string lastname = 4; 
    required string ssn= 5; 



    // Embedded Address message spec 

    message Address { 
     required int32 id = 1; 
     required string country = 2 [default = "US"];; 
     optional string state = 3; 
     optional string city = 4; 
     optional string street = 5; 
     optional string zip = 6; 



     enum Type { 
     HOME = 0; 

     WORK = 1; 

     } 

     optional Type addrType = 7 [default = HOME]; 

} 
    repeated Address addr = 16; 
} 
+0

你从哪里得到这个文件?你的问题到底是什么? – 2013-03-14 15:03:30

+0

我想做一个简单的示例协议缓冲区 – 2013-03-14 15:06:04

+0

请参阅答案。看起来你没有仔细阅读手册。 – 2013-03-14 15:13:35

回答

4

为什么 “消息用户”?为什么不“上课用户”?

谷歌协议缓冲器(GPB)没有在它的语法class,它有message代替。 https://developers.google.com/protocol-buffers/docs/style

此文件只是文本文件,它应该有.proto扩展名。毕竟你会运行一个实用程序,它会生成真正的Java类,你可以在你的项目中导入和使用。

https://developers.google.com/protocol-buffers/docs/javatutorial

编译您Protocol Buffers的

protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto 

required string lastname = 4;

4代表的字段id,而不是一个值,它会被用来生成比特流。

+0

我没有任何编译经验,我无法理解“编译您的协议缓冲区 protoc -I = $ SRC_DIR --java_out = $ DST_DIR $ SRC_DIR/addressbook.proto ....” – 2013-03-14 15:20:50

+0

使用CMD? $ SRC_DIR? $ DST_DIR? – 2013-03-14 15:21:54

+0

编译意味着生成真正的Java文件,以包含在项目代码中。是的,使用'cmd'来运行'protoc'。原始文件是SRC_DIR,DST_DIR是要放置生成java文件的位置。 – 2013-03-14 15:28:16