Maison > développement back-end > Golang > Qu'est-ce que la méthode « mustEmbedUnimplemented » de gRPC et comment garantit-elle la compatibilité ascendante ?

Qu'est-ce que la méthode « mustEmbedUnimplemented » de gRPC et comment garantit-elle la compatibilité ascendante ?

Susan Sarandon
Libérer: 2024-11-30 17:59:09
original
953 Les gens l'ont consulté

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

Comprendre la méthode mustEmbedUnimplemented de gRPC*

Dans sa mise à jour la plus récente, gRPC-go a introduit la méthode mustEmbedUnimplemented* méthode pour assurer la compatibilité ascendante de ses serveurs. Mais que fait-il exactement ?

Avant mustEmbedUnimplemented*

Auparavant, l'enregistrement d'une implémentation de serveur impliquait de l'enregistrer directement, comme indiqué :

        pb.RegisterFooBarServiceServer(
            server,
            &FooBarServer{}, // or whatever you use to construct the server impl
        )
Copier après la connexion

Si le serveur manquait de certaines implémentations de méthodes, cela entraînerait des erreurs lors compilation.

Présentation de mustEmbedUnimplemented*

Avec le compilateur protoc-gen-grpc-go mis à jour, la compatibilité ascendante devient la valeur par défaut. Cela signifie :

  1. Mandating mustEmbedUnimplementedFooBarServiceServer : L'inclusion de cette instruction dans les implémentations du serveur évite les erreurs de compilation lorsque les nouvelles méthodes ne sont pas explicitement implémentées. Cependant, si des méthodes non implémentées sont appelées, cela déclenche une erreur d'exécution (code.Unimplemented).
  2. Désactivation avec Unsafe FooBarServiceServer : Les développeurs peuvent désactiver la compatibilité ascendante en intégrant UnsafeFooBarServiceServer à la place. . Cette interface intègre la méthode mustEmbedUnimplementedFooBarServiceServer(), éliminant l'erreur de compilation tout en permettant l'implémentation explicite de nouveaux gestionnaires.

Configuration de la compatibilité ascendante

De plus, la compatibilité ascendante peut être désactivée en définissant l'option suivante lors de l'utilisation protoc-gen-grpc-go :

protoc --go-grpc_out=require_unimplemented_servers=false:.
Copier après la connexion

Avantages

mustEmbedUnimplemented* garantit que les serveurs sont toujours compatibles avec les versions ultérieures, évitant ainsi les erreurs inattendues causées par des méthodes non mises en œuvre. En se désinscrivant avec Unsafe FooBarServiceServer, les développeurs peuvent maintenir la compatibilité ascendante tout en adhérant aux principes de compatibilité ascendante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal