Protocol Buffer在Go中的使用简介

为什么使用protocol buffers

下面的例子使用比较简单的“地址登记”应用,可以从文件中读取用户的联系信息。每个用户在地址簿中有名字、ID和邮件地址以及联系电话。
如何序列化以及检索这样的结构化数据,有几种方法可以解决这种问题:

  • 使用gobs序列化Go数据结构。在Go特定环境下,这是一个好的解决方案。但是如果你需要与其他平台编写的应用共享数据,它将无法正常工作。
  • 你可以发明一种特殊的方法,将数据项编码为单个字符串。例如将4个整数编码为“12:3:-23:67”,这是一种简单而灵活的方法,虽然它确实需要编写一次性编码和解析代码,并且解析会产生很小的运行时成本。这种方法适合编码非常简单的数据。
  • 将数据序列化为XML。这种方法比较有吸引力,因为XML对人们来说更容易阅读,而且有许多语言的库支持。如果你想与其他应用程序/项目共享数据,那么这是一个不错的选择。但是,XML是比较占资源的,并且编码/解码它都会对应用程序造成巨大的性能损失。

protocol buffers是灵活、高效以及自动化的解决方案,它可以解决上面这个问题。使用Protocol Buffers,你可以编写要存储的数据结构的.proto描述。然后protocol buffers编译器会根据.proto文件创建一个类,该类使用有效的二进制格式实现protocol buffers

定义protocol格式

为了创建地址簿应用,你需要先创建.proto文件。.proto文件定义比较简单:首先为每个你想要序列化的数据结构添加消息,接着定义消息每个字段名称。下面假设定义消息的.proto文件是addressbook.proto
首先.proto文件起始于包声明,可以帮助我们防止不同工程之间的包名冲突。

syntax  = "proto3"
package main;

import "google/protobuf/timestamp.proto";

在Go中,除

你可能感兴趣的:(protocol,buffers,protobuf)