gRPC の "mustEmbedUnimplemented" について*
最近導入された "mustEmbedUnimplemented*" gRPC-go のメソッド、上位互換性重要性が増します。この変更により、次のような疑問が生じます: この機能は機能をどのように強化し、以前に発生した課題に対処しますか?
前方互換性
以前のバージョンでは、メソッド実装が欠落している gRPC サーバーはトリガーを引き起こしていました。コンパイル時エラー。このエラーはフェイルセーフとして機能し、不完全な実装を防ぎます。ただし、protoc-gen-grpc-go コンパイラの新しいバージョンでは、代わりに「未実装*」インターフェイスを実装することにより、サーバーが前方互換性を持つ必要があります。
前方互換性の利点
上位互換性により、いくつかの機能が提供されます利点:
Embedding "Unimplemented"*
「未実装*」を埋め込むには
type server struct { pdfpb.UnimplementedGreetServiceServer }
これによりコンパイラ エラーは発生しませんが、実装されていないメソッドは実行時 "codes.Unimplemented" エラーを引き起こします。
上位互換性のオプトアウト
必要に応じて、代わりに「安全でない」インターフェイスを埋め込むことで、上位互換性をオプトアウトします。これらのインターフェイスには、実際のメソッド実装を必要としない「mustEmbedUnimplemented*」メソッドが含まれています。
type FooBarService struct { grpc.UnsafeFooBarServiceServer // other fields }
前方互換性を持たないコードの生成
また、 「require_unimplemented_servers=false」オプションを渡すことで、前方互換性のないコードを生成します。 protoc-gen-grpc-go プラグイン:
protoc --go-grpc_out=require_unimplemented_servers=false:.
以上がgRPC の「mustEmbedUnimplemented*」は前方互換性とランタイム エラー処理をどのように強化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。