ホームページ > バックエンド開発 > Golang > gRPC の「mustEmbedUnimplemented」メソッドとは何ですか?また、どのように上位互換性を確保しますか?

gRPC の「mustEmbedUnimplemented」メソッドとは何ですか?また、どのように上位互換性を確保しますか?

Susan Sarandon
リリース: 2024-11-30 17:59:09
オリジナル
954 人が閲覧しました

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

gRPC の mustEmbedUnimplemented メソッド*

最新の更新で、gRPC-go は、mustEmbedUnimplemented* メソッドで上位互換性を確保するサーバー。しかし、これは正確には何をするのでしょうか?

mustEmbedUnimplemented が導入される前は*

以前は、次のようにサーバー実装を直接登録する必要がありました。

        pb.RegisterFooBarServiceServer(
            server,
            &FooBarServer{}, // or whatever you use to construct the server impl
        )
ログイン後にコピー
サーバーに特定のメソッド実装が欠けている場合、実行中にエラーが発生します。 Compilation.

mustEmbedUnimplemented の導入*

更新された protoc-gen-grpc-go コンパイラーでは、前方互換性がデフォルトになります。これは、次のことを意味します。

  1. mustEmbedUnimplementedFooBarServiceServer: を必須にする このステートメントをサーバー実装に含めると、新しいメソッドが明示的に実装されていない場合のコンパイル時エラーが防止されます。ただし、実装されていないメソッドが呼び出されると、実行時エラー (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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート