protobuf入门教程(一):简介和安装
1.1 簡介
1.1.1 什么是protobuf
protobuf也叫protocol buffer是google 的一種數據交換的格式,它獨立于語言,獨立于平臺。google 提供了多種語言的實現:Java、c#、c++、Go?和?Python,每一種實現都包含了相應語言的編譯器以及庫文件。
由于它是一種二進制的格式,比使用 xml 、json進行數據交換快許多??梢园阉糜诜植际綉弥g的數據通信或者異構環境下的數據交換。作為一種效率和兼容性都很優秀的二進制數據傳輸格式,可以用于諸如網絡傳輸、配置文件、數據存儲等諸多領域。
更多詳情請看:https://developers.google.com/protocol-buffers/docs/overview(需要翻墻)
1.1.2 protobuf的優缺點
1.1.2.1 優點
- 性能好/效率高
- 代碼生成機制
- 支持“向后兼容”和“向前兼容”
- 支持多種編程語言
1.1.2.1 缺點
- 應用不夠廣(相比xml和json)
- 二進制格式導致可讀性差
- 缺乏自描述
1.2 安裝
1.2.1 Ubuntu環境搭建
github源代碼下載地址:https://github.com/google/protobuf
源碼包中的src/README.md, 有詳細的安裝說明,安裝過程如下:?
1、解壓壓縮包:unzip protobuf-master.zip
2、進入解壓后的文件夾:cd protobuf-master
3、安裝所需工具:sudo apt-get install autoconf automake libtool curl make g++ unzip
4、自動生成configure配置文件:./autogen.sh
5、配置環境:./configure
6、編譯源代碼(時間比較長):make
7、安裝:sudo make install
8、刷新動態庫:sudo ldconfig
1.2.2 環境測試
1.2.2.1 examples例子
在源代碼包中,有個examples文件夾,把里面的addressbook.proto、add_person.cc、list_people.cc拷貝出來:?
1.2.2.2 編譯 .proto文件
- protoc:protobuf自帶的編譯工具,將.proto文件生成指定的類
- –cpp_out:指定輸出特定的語言和路徑
通過protoc工具編譯.proto文件時,編譯器將生成所選擇語言的代碼,這些代碼可以操作在.proto文件中定義的消息類型,包括獲取、設置字段值,將消息序列化到一個輸出流中,以及從一個輸入流中解析消息。
對C++來說,編譯器會為每個.proto文件生成一個.h文件和一個.cc文件,.proto文件中的每一個消息有一個對應的類。
1.2.2.3 編譯運行測試案例
1) 寫文件(序列化)
編譯代碼:?
- 反引號(` 數字1前面的符號):反引號的作用就是將反引號內的linux命令執行
- pkg-config 是通過庫提供的一個.pc文件獲得庫的各種必要信息的,包括版本信息、編譯和連接需要的參數等。
- pkg-config –cflags protobuf:列出指定共享庫的預處理和編譯flags
運行可執行程序:?
pb.xxx文件內容如下:?
2) 讀文件(反序列化)
參考資料:?
1、http://baike.baidu.com?
2、http://www.jianshu.com/p/746bb9d81380
總結
以上是生活随笔為你收集整理的protobuf入门教程(一):简介和安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个最简单的UDP通信
- 下一篇: protobuf入门教程(二):消息类型