首頁 > 後端開發 > Golang > gRPC-go 中的「mustEmbedUnimplemented*」如何確保伺服器實現的前向相容性?

gRPC-go 中的「mustEmbedUnimplemented*」如何確保伺服器實現的前向相容性?

DDD
發布: 2024-11-29 12:40:11
原創
994 人瀏覽過

How Does `mustEmbedUnimplemented*` in gRPC-go Ensure Forward Compatibility for Server Implementations?

MustEmbedUnimplemented* gRPC 中用於前向相容性的方法

grpc-go*方法來確保伺服器實作中的前向相容性。以前,伺服器實作可以註冊服務,而無需實作原型定義中定義的所有方法。這導致添加到原型的新方法會由於伺服器中缺少實作而導致編譯時錯誤。 使用MustEmbedUnimplemented

*

方法:

    前向相容性
  • :實現現在必須嵌入未實作🎜>* >ServiceServer,允許新增方法而不會出現編譯時錯誤。但是,任何嘗試呼叫未實現的方法都會導致程式碼出現運行時錯誤。未實現。 選擇退出
  • :開發人員可以透過嵌入 Unsafe*ServiceServer 來取代。這將避免執行階段錯誤,​​但會在未實作方法的情況下保留編譯時錯誤。 例如:

要停用程式碼產生中的前向相容性:

// Implements gRPC FooBarServiceServer
type FooBarService struct {
    grpc.UnsafeFooBarServiceServer // Opt out of forward compatibility
    // other fields
}
登入後複製

mustEmbedUnimplemented

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

mustEmbedUnimplemented*伺服器實作始終保持最新的原型定義,防止潛在的不一致。它提供了一種優雅的方式來添加新方法,而不會破壞現有程式碼,同時仍然保持向後相容性。

以上是gRPC-go 中的「mustEmbedUnimplemented*」如何確保伺服器實現的前向相容性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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