Heim >Backend-Entwicklung >Golang >Wie verbessert „mustEmbedUnimplemented*' von gRPC die Vorwärtskompatibilität und die Fehlerbehandlung zur Laufzeit?
Verstehen von „mustEmbedUnimplemented“ in gRPC*
Mit der kürzlichen Einführung von „mustEmbedUnimplemented*"-Methode in gRPC-go gewinnt die Vorwärtskompatibilität an Bedeutung. Diese Änderung wirft die Frage auf: Wie verbessert diese Funktion die Funktionalität und bewältigt zuvor aufgetretene Herausforderungen?
Vorwärtskompatibilität
In früheren Versionen wurden gRPC-Server mit fehlenden Methodenimplementierungen ausgelöst ein Fehler bei der Kompilierung. Dieser Fehler diente als Ausfallsicherung und verhinderte unvollständige Implementierungen. Allerdings erfordern neuere Versionen des protoc-gen-grpc-go-Compilers jetzt, dass Server aufwärtskompatibel sind, indem stattdessen „Unimplemented*“-Schnittstellen implementiert werden.
Vorteile der Vorwärtskompatibilität
Die Vorwärtskompatibilität bietet mehrere Vorteile:
Einbettung „Nicht implementiert““*
Um eine „Nicht implementierte*“-Schnittstelle einzubetten, fügen Sie einfach eine hinzu Keine Implementierung in Ihre Serverstruktur, etwa so:
type server struct { pdfpb.UnimplementedGreetServiceServer }
Dies führt nicht zu Compilerfehlern, aber alle nicht implementierten Methoden führen zu einem Laufzeitfehler „codes.Unimplemented“.
Aufwärtskompatibilität deaktivieren
Auf Wunsch können Sie die Aufwärtskompatibilität durch Einbetten deaktivieren Stattdessen „unsichere“ Schnittstellen. Diese Schnittstellen umfassen die Methode „mustEmbedUnimplemented*“, ohne dass tatsächliche Methodenimplementierungen erforderlich sind.
type FooBarService struct { grpc.UnsafeFooBarServiceServer // other fields }
Code ohne Vorwärtskompatibilität generieren
Das können Sie auch Generieren Sie Code ohne Aufwärtskompatibilität, indem Sie die Option „require_unimplemented_servers=false“ an übergeben protoc-gen-grpc-go-Plugin:
protoc --go-grpc_out=require_unimplemented_servers=false:.
Das obige ist der detaillierte Inhalt vonWie verbessert „mustEmbedUnimplemented*' von gRPC die Vorwärtskompatibilität und die Fehlerbehandlung zur Laufzeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!