iOS 开发之 protocol Buffer 数据交换
前言:
从 14 年公司做项目时开始接触 Google 的 protocol Buffer,用了一段时间,后来到新公司就没有机会再使用了,趁着还没完全忘记,记录下。
简介:protocolbuffer(以下简称PB)是 google 的一种数据交换的格式,它独立于语言,独立于平台,Google 提供了 C++,C#,Java,go,Python 的实现(重要的是它已经支持 Objective-C 了),每一种文件都提供了对应语言的编辑器及库文件。由于是二进制格式,比 XML 进行数据交换快很多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
优势:
protocol Buffer 是跨语言的数据交换格式,它自带一个编译器 protoc ,只需要对它进行编译,就可以生成各个语言对应的代码。
最重要的是 protocol Buffer 内部结构使得其相比其他方式性能好:占用较小,传输效率更高。以下是一些对比数据(来自网络)。
尤其是在数据量较大时,更能突出其优势:
还要一些与其他数据交换格式的对比:
关于 protocol Buffer 的使用可原理可以参考:Google Protocol Buffer 的使用和原理
以下是 protocol Buffer 的环境配置及使用(之前电脑上安装过,现充值操作下):
Google Protocol Buffer 在 GitHub 上链接:
可以在 GitHub 上下载对应版本编译器包。
安装过程:
下载完成解压后,cd 到 objectivec 目录,依次执行以下:
./configure make make check sudo make install
执行成功后,检查是否安装成功:protoc --version
使用:
在工程中添加 protocol 文件及依赖库:
设置静态库头文件目录:targets —> Build Setting —> Search Paths —> Header Search Paths, 写入:$(PROJECT)/protocolbuf
然后对要编译 .proto 文件进行编译:protoc *.proto --objc_out=. (输出到当前 proto 文件夹),也可以输入到其他文件夹 :protoc *.proto --objc_out=../TestPBFilePath