zoukankan      html  css  js  c++  java
  • 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

       

      

      

  • 相关阅读:
    node的function函数和路由代码的小例子
    关于node回调函数中同步和异步操作的理解
    node初学
    CTF知识点总结(二)
    知识图谱
    论文笔记 无监督与混合IDS
    CTF知识点总结(一)
    论文笔记 网络安全图谱以及溯源算法
    攻防世界 wtf.sh-150
    攻防世界 Web_php_wrong_nginx_config
  • 原文地址:https://www.cnblogs.com/ZachRobin/p/6903606.html
Copyright © 2011-2022 走看看