切換語言為:簡體

在Mac上安裝Protocol Buffers和Go語言相關外掛

  • 爱糖宝
  • 2024-10-23
  • 2044
  • 0
  • 0

基本概念:

Protocol Buffers(通常簡稱為 Protobuf)是一種由 Google 開發的用於序列化結構化資料的語言中立、平臺中立、可擴充套件的機制。它類似於 XML 和 JSON,但更小、更快、更簡單。以下是對 Protocol Buffers 的簡單介紹

主要特點:

語言中立:Protocol Buffers 可以生成多種程式語言的程式碼(如 C++、Java、Python、Go、C# 等),使得不同語言編寫的系統之間可以輕鬆地交換資料。

平臺中立:它可以在不同的作業系統和硬件平臺上使用,確保資料在不同環境中的相容性。

高效的資料序列化:Protocol Buffers 生成的資料格式非常緊湊,比 XML 和 JSON 更小,傳輸和儲存效率更高。序列化和反序列化速度快,適合高效能應用場景。

可擴充套件性:您可以隨時新增新的欄位到數據結構中,而不會破壞現有的程式碼和資料。舊版本的程式碼仍然可以讀取新版本的資料,只要忽略新欄位即可。

定義數據結構:使用 .proto 檔案定義數據結構,描述資料的欄位和型別。例如:

message Person {
  string name = 1;
  int32 id = 2;
  string email = 3;
}

如何在 mac 上進行安裝protobuf 和相關 go 外掛:

在 mac 上可以很方便的使用 homebrew 進行安裝。不過需要注意的是,名稱需要注意。

brew install protobuf

brew install protoc-gen-go

brew install protoc-gen-go-grpc

三個命令分別執行之後等待一段時間久可以下載完成。

驗證安裝結果:

protoc --version

protoc-gen-go --version

protoc-gen-go-grpc --version

執行上面的命令,能看到命令列,輸出版本資訊,說明已經安裝完成,比如我安裝的版本是 28.2。

libprotoc 28.2

protoc-gen-go v1.35.1

protoc-gen-go-grpc 1.5.1

幾個關鍵的名詞解釋:

Protocol Buffers(Protobuf)、protoc-gen-goprotoc-gen-go-grpc 之間的關係可以概括為以下幾點:

Protocol Buffers(Protobuf)

  • 定義:Protocol Buffers 是一種用於序列化結構化資料的語言中立、平臺中立、可擴充套件的機制。

  • 作用:它允許開發者定義數據結構(使用 .proto 檔案),並透過編譯器生成不同程式語言的程式碼,以便在不同系統之間高效地交換資料。

protoc 編譯器

  • 定義protoc 是 Protocol Buffers 的編譯器,用於將 .proto 檔案編譯成目標程式語言的程式碼。

  • 作用protoc 讀取 .proto 檔案,並生成相應的程式碼檔案,這些程式碼檔案包含了數據結構的定義和序列化/反序列化的方法。

protoc-gen-go

  • 定義protoc-gen-go 是一個外掛,用於 protoc 編譯器,專門生成 Go 語言的程式碼。

  • 作用:當使用 protoc 編譯 .proto 檔案時,可以透過指定 --go_out 引數來呼叫 protoc-gen-go 外掛,生成 Go 語言的程式碼。生成的程式碼包括數據結構的定義、序列化和反序列化的方法。

protoc-gen-go-grpc

  • 定義protoc-gen-go-grpc 是另一個外掛,用於 protoc 編譯器,專門生成 Go 語言的 gRPC 程式碼。

  • 作用:當使用 protoc 編譯 .proto 檔案時,可以透過指定 --go-grpc_out 引數來呼叫 protoc-gen-go-grpc 外掛,生成 Go 語言的 gRPC 程式碼。生成的程式碼包括 gRPC 服務的介面定義、客戶端和伺服器端的程式碼。

關係總結

  • Protocol Buffers 是定義數據結構和序列化機制的基礎。

  • protoc 編譯器 是用於將 .proto 檔案編譯成不同程式語言程式碼的工具。

  • protoc-gen-goprotoc 的一個外掛,專門用於生成 Go 語言的程式碼。

  • protoc-gen-go-grpcprotoc 的另一個外掛,專門用於生成 Go 語言的 gRPC 程式碼。

使用示例

假設你有一個 .proto 檔案 example.proto,你可以使用以下命令生成 Go 語言的程式碼:

protoc --go_out=. --go-grpc_out=. example.proto

  • --go_out=. 引數呼叫 protoc-gen-go 外掛,生成 Go 語言的基本程式碼。

  • --go-grpc_out=. 引數呼叫 protoc-gen-go-grpc 外掛,生成 Go 語言的 gRPC 程式碼。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.