首頁 > 後端開發 > Golang > gRPC 的「mustEmbedUnimplemented」方法是什麼以及它如何確保前向相容性?

gRPC 的「mustEmbedUnimplemented」方法是什麼以及它如何確保前向相容性?

Susan Sarandon
發布: 2024-11-30 17:59:09
原創
957 人瀏覽過

What is gRPC's `mustEmbedUnimplemented` Method and How Does it Ensure Forward Compatibility?

了解gRPC的mustEmbedUnimplemented方法*

在最近的更新中,gRPC-gomplemusted >*方法以確保其向前相容性伺服器。但它到底是做什麼的?

在MustEmbedUnimplemented*

之前,註冊伺服器實作需要直接註冊它,如下所示:

        pb.RegisterFooBarServiceServer(
            server,
            &FooBarServer{}, // or whatever you use to construct the server impl
        )
登入後複製
如果伺服器缺少某些方法的實現,會導致運行時出錯

引入MustEmbedUnimplemented*

使用更新的 protoc-gen-grpc-go 編譯器,前向相容性成為預設值。這表示:

  1. 強制必須EmbedUnimplementedFooBarServiceServer: 在伺服器實作中包含此語句可以防止在未明確實作新方法時出現編譯時錯誤。但是,如果呼叫未實作的方法,則會觸發執行時間錯誤(code.Unimplemented)。
  2. 使用 Unsafe FooBarServiceServer 選擇退出: 開發人員可以透過嵌入 UnsafeFooBarServiceServer 來選擇退出向前相容性。此介面合併了 MustEmbedUnimplementedFooBarServiceServer() 方法,消除了編譯時錯誤,同時仍允許明確實作新的處理程序。

配置前向相容性

此外,使用時可以透過設定以下選項來停用向前相容性protoc-gen-grpc-go:

protoc --go-grpc_out=require_unimplemented_servers=false:.
登入後複製

好處

mustEmbedUnimplemented

*確保伺服器始終向前相容,防止導致意外錯誤通過未實現的方法。透過選擇退出 Unsafe FooBarServiceServer,開發人員可以保持向後相容性,同時仍遵守前向相容性原則。

以上是gRPC 的「mustEmbedUnimplemented」方法是什麼以及它如何確保前向相容性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板