了解gRPC 中的「mustEmbedUnimplemented」*
最近引入了mplemustEmbed mplemust. ” gRPC-go中的方法,向前兼容性增強意義。此變更提出了一個問題:此功能如何增強功能並解決先前遇到的挑戰?
前向相容性在早期版本中,缺少方法實作的 gRPC 伺服器會觸發編譯時錯誤。這個錯誤起到了故障保護的作用,防止了不完整的實作。然而,較新版本的 protoc-gen-grpc-go 編譯器現在要求伺服器透過實現「未實現的
*」介面來實現前向相容。
前向相容性的好處向前相容性提供了多種優點:
」*要嵌入「未實現
*」接口,只需新增一個nil實作到您的伺服器結構,如下所示:
這不會導致編譯器錯誤,但任何未實作的方法都會導致執行時間「codes.Unimplemented」錯誤。type server struct { pdfpb.UnimplementedGreetServiceServer }選擇退出前向相容性
如果需要,您可以透過以下方式選擇退出前向相容性而是嵌入「不安全」介面。這些介麵包括「mustEmbedUnimplemented
*」方法,而不需要實際的方法實作。
type FooBarService struct { grpc.UnsafeFooBarServiceServer // other fields }產生沒有前向相容性的程式碼
您也可以透過將「require_unimplemented_servers = false」選項傳遞給protoc-gen-grpc-go 插件:
以上是gRPC 的「mustEmbedUnimplemented*」如何增強前向相容性和執行階段錯誤處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!