protobufのインストールと実行
3396 ワード
データ交換フォーマット
一般的なデータ交換フォーマットは3つあります.
func Marshal(v interface{}) ([]byte, error) V
func Unmarshal(data []byte, v interface{}) error Unmarshal json v 。 newdata:=&pb.Person{}
protobufの優位性と劣勢
メリット:
1:シーケンス化後の体積はJsonとXMLに比べて小さく、ネットワーク伝送に適している
2:プラットフォーム間多言語対応
3:メッセージ形式のアップグレードと互換性は悪くない
4:シーケンス化逆シーケンス化速度が速く、Jsonの処理速度より速い
劣勢:
1:応用が広くない(xmlとjsonに比べて)
2:バイナリフォーマットによる可読性の低下
3:自己説明不足
protobuf環境インストール
1.protobufコンパイルツールのインストール
1、protoBufをダウンロード:git clonehttps://github.com/protocolbuffers/protobuf.git2、または圧縮パッケージを直接ドラッグしてunzip protobufを解凍する.zip 3、依存ライブラリsudo apt-get install autoconf automake libtool curl make++unzip libffi-dev-y 4のインストール、ディレクトリcd protobuf/5へのアクセス、configureプロファイルの自動生成:./autogen.sh 6、構成環境:./configure 7、ソースコードのコンパイル(時間が長い):make 8、sudo make install 9のインストール、共有ライブラリのリフレッシュ(重要なステップですね)sudo ldconfig 10、成功したらコマンドテストprotoc-h
2.protobufのgo言語プラグインのインストール
protobufではgo言語を直接サポートしていません.手動で関連プラグインをインストールする必要があります.
1 protoパケットGo言語を取得するproto APIインタフェースgo get-v-u github.com/golang/protobuf/proto go get -v -u github.com/golang/protobuf/protoc-gen-go
2 cd$GOPATH/src/githubをコンパイルする.com/golang/protobuf/protoc-gen-go/go build 3生成されたprotoc-gen-go実行可能ファイルを/binディレクトリの下に置くsudo cp protoc-gen-go/bin/
きほんコンパイル
定義することでよい.protoファイルはgo、Java、Python、C++、Ruby、JavaNano、Objective-C、またはC#コードを生成するために、ベースが必要である.protoファイルprotocolbufferコンパイラprotocを実行します.
syntax = "proto3"; // ,
package pb; // go
//message ,
message Person {
string name = 1; //
int32 age = 2; //
repeated string emails = 3; // (repeated )
repeated PhoneNumber phones = 4; //
}
//enum ,
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
//message ,
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
protocolコンパイラを次のように呼び出します.
protoc --proto_path=IMPORT_PATH --go_out=DST_DIR path/to/file.proto
次のようになります.
protoc --go_out=./ *.proto
を用いる複数の一括コンパイルを可能にする.protoファイル作成したばかりのprotoファイルを以下のコマンドでコンパイルできます.
protoc --go_out=./ *.proto
コンパイル中に何が起こったの?
protocol bufferコンパイラで実行する.protoファイルの場合、コンパイラは選択する言語のコードを生成し、これらのコードは操作することができる.protoファイルで定義されたメッセージタイプ.フィールド値の取得、設定、メッセージの出力ストリームへのシーケンス化、入力ストリームからメッセージの解析などが含まれます.
goにとって、コンパイラはメッセージタイプごとに1つ生成する.pd.goファイル.
最後に使用するときは別のファイルで使用します.