gRPC의 "mustEmbedUnimplemented" 이해*
최근 도입된 "mustEmbedUnimplemented*" gRPC-go의 메서드, 향후 호환성이 중요해집니다. 이 변경 사항은 다음과 같은 질문을 촉발합니다. 이 기능은 어떻게 이전에 직면했던 문제를 해결하고 기능을 향상시키는가?
향후 호환성
이전 버전에서는 메소드 구현이 누락된 gRPC 서버가 트리거됩니다. 컴파일 타임 오류. 이 오류는 불완전한 구현을 방지하는 안전 장치 역할을 했습니다. 그러나 최신 버전의 protoc-gen-grpc-go 컴파일러에서는 이제 대신 "구현되지 않은*" 인터페이스를 구현하여 서버가 향후 호환되도록 요구합니다.
향후 호환성의 이점
향후 호환성은 다양한 기능을 제공합니다. 장점:
"구현되지 않음"*
"구현되지 않은*" 인터페이스를 삽입하려면 간단히 다음과 같이 서버 구조체에 nil 구현을 추가하세요.
type server struct { pdfpb.UnimplementedGreetServiceServer }이렇게 하면 컴파일러 오류가 발생하지 않지만 구현되지 않은 메서드는 런타임 "codes.Unimplemented" 오류가 발생합니다.
향후 호환성 옵트아웃
원하는 경우 다음 방법으로 상위 호환성을 옵트아웃할 수 있습니다. 대신 "안전하지 않은" 인터페이스를 삽입합니다. 이러한 인터페이스에는 실제 메서드 구현이 필요하지 않은 "mustEmbedUnimplemented*" 메서드가 포함되어 있습니다.
type FooBarService struct { grpc.UnsafeFooBarServiceServer // other fields }
향후 호환성 없이 코드 생성
또한 "require_unimplemented_servers=false" 옵션을 전달하여 상위 호환성 없이 코드를 생성합니다. protoc-gen-grpc-go 플러그인:위 내용은 gRPC의 'mustEmbedUnimplemented*'는 어떻게 향후 호환성과 런타임 오류 처리를 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!