目錄
- 前言
- 一、下載
- 注意
- 二、解壓安裝
- 三、Protobuf的使用
- 1、創建.proto文件
- 2、利用protoc編譯.proto文件
前言
Protocol Buffers是Google的?種語??關、平臺?關、可擴展的序列化結構數據的?法,它可?于(數據)通信協議、數據存儲等。
Protocol Buffers類?于XML,是?種靈活,?效,?動化機制的結構數據序列化?法,但是?XML更?、更快、更為簡單。
你可以定義數據的結構,然后使?特殊?成的源代碼輕松的在各種數據流中使?各種語?進?編寫和讀取結構數據。你甚?可以更新數據結構,?不破壞由舊數據結構編譯的已部署程序。
一、下載
下載路徑:https://github.com/protocolbuffers/protobuf/releases
如果鏈接打不開,需要下載 protoc-29.5-win64,可點擊這里下載 https://download.csdn.net/download/weixin_45961836/91668744
點擊鏈接打開頁面,滑到下面可以看到
選擇對應的版本
如果沒有對應的版本,例如win64,可滑動到下面,選擇其它版本
點擊打開之后,可以看到有win64,點擊下載即可
注意
Rc版本:全稱release candidate 正式候選版,不建議選。
二、解壓安裝
解壓壓縮包,解壓出來的文件目錄
復制 bin文件路徑 到 環境變量-系統變量Path
例如:D:\protoc-29.5-win64\bin
Win + R 打開運行窗口,輸入
protoc --version
輸出結果
安裝成功!!
三、Protobuf的使用
官網文檔:https://protobuf.com.cn/overview/
1、創建.proto文件
創建一個.proto文件
syntax = "proto3";
package contacts;message PeopleInfo{string name = 1;int32 age = 2;
}
我們需要在這個PeopleInfo.proto文件中完成一些初始化工作。比如:指定PB語法版本、為當前.proto文件中的數據指定作用域;
關鍵字 syntax
我們可以利用來指定當前.proto文件鎖采用的語法版本
syntax = "proto3";
注意這個語法版本聲明需要放在當前.proto文件的首行(注釋不算一行),其次就是我們一般都是需要指定當前.proto文件所采用的語法版本為"proto3"的版本,如果不指定的話 .proto文件默認采用 proto2 語法進行編譯,proto2語法相對于proto3語法在編程語言支持上沒有proto3廣,同時對于一些語法的支持也不是很好,為此實際開發中我們通常采用proto3語法來編譯當前文件。
關鍵字 package
我們也可以為當前文件中定義的類聲明一個命名空間,來避免不同 .proto之間的命名沖突的問題,這一點我們可以利用關鍵字來實現:
package contacts;
當然,這個命名空間的定義并不是強制的,但是為了養成良好的編程習慣,我們還是希望能將其定義出來。package 定義的命名空間在經過protoc編譯器編譯過后會變為C++中的namespace 命名空間,其中包含著在當前.proto文件中定義的各種類;
關鍵字 message
初始化工作都完成的差不多了,我們就可以開始定義類了,在.proto文件中定義類是利用 message 關鍵字來完成的
message PeopleInfo{string name = 1;int32 age = 2;
}
在message 定義的類中,我們只需要定義出該類所包含的屬性即可,同時我們需要給這些屬性進行編號,并且每個同級屬性之間不能重復,這是PB語法要求的;
因此在message 中定義的字段格式如下:
message xx{//其中同級屬性之間num不能重復type name = num;
}
2、利用protoc編譯.proto文件
編譯命令:
protoc --csharp_opt=. xx.proto
執行成功!
Test.cs 是編譯后的結果,引入項目中使用即可。
Protobuf的使用可參考 https://blog.csdn.net/t5y22/article/details/142169446