mustEmbedUnimplemented를 사용한 gRPC의 상위 호환성*
gRPC-go 라이브러리는 서버에서 상위 호환성을 향상시키기 위해 mustEmbedUnimplemented*** 메서드를 도입했습니다.
과거에는 gRPC 서버가 필요한 메서드가 구현되지 않으면 컴파일이 실패합니다. 이를 완화하기 위해 개발자는 사용하려는 의도가 아니더라도 구현되지 않은 메서드를 수동으로 구현해야 했습니다.
mustEmbedUnimplemented*는 상위 호환성을 거부하여 이 문제를 해결합니다. 이는 다음을 의미합니다.
예를 들어 GreetService 인터페이스가 있는 경우:
type GreetService interface { Greet(ctx context.Context, req *pb.GreetRequest, opts ...gax.CallOption) (*pb.GreetResponse, error) }
이전에는 다음과 같이 구현했습니다.
type server struct {...} func (s *server) Greet(ctx context.Context, req *pb.GreetRequest, opts ...gax.CallOption) (*pb.GreetResponse, error) {...} func (s *server) MustEmbeddUnimplementedGreetServiceServer() {...}
이제 mustEmbedUnimplemented***를 사용하면 다음과 같은 방법으로 상위 호환성을 옵트아웃할 수 있습니다. 대신 안전하지 않은*** 인터페이스를 삽입합니다.
type server struct { grpc.UnsafeGreetServiceServer ... }
이 변경 사항은 유연성을 높이고 불필요한 코드를 방지합니다. 귀하의 서버 구현.
위 내용은 gRPC의 `mustEmbedUnimplemented`는 어떻게 서버 향후 호환성을 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!