Dart의 공식 gRPC 지원 발표

Dart의 공식 gRPC 지원 발표

gRPC는 고성능 오픈소스 RPC 프레임워크예요. 간단한 서비스 정의를 지원하고, http/2 기반으로 되어 있으며, 양방향 스트리밍과 완전히 통합된 플러그 가능한 인증을 지원하죠. 이 gRPC 프레임워크는 다양한 언어를 지원하는데, 이제 Dart 언어 지원이 베타로 제공된다는 소식을 전해 드리게 되어 기쁩니다! Dart gRPC 지원은 Dart SDK 1.24.3 이상 버전에서 동작하며, 현재는 Flutter와 VM/Server 플랫폼을 지원해요.

출처: Announcing official gRPC support for Dart

본문

서버 만들기와 gRPC 서비스 정의 작성하기

gRPC 서비스는 보통 Protocol Buffers v3를 사용해 엔드포인트와 데이터 직렬화를 정의해요. 'Greeter'라는 서비스에 rpc 메시지 'SayHello'가 하나 들어 있는 작은 서비스 정의 예시를 들어 볼게요(두 메시지의 숫자 '1'은 메시지 필드의 고유 ID를 나타내요). 이 예시 코드는 QuickStart에서 전체를 확인할 수 있어요.

서비스를 정의하고 나면 서버의 뼈대(skeleton)를 자동으로 생성할 수 있어요.

protoc --dart_out=grpc:generated -Iprotos protos/greeter.proto

이 명령은 generated 디렉터리에 GreeterServiceBase 클래스를 만들어 줘요. 이 클래스를 상속해서 실제 서비스 구현을 추가하면 되죠.

gRPC 클라이언트로 서버 호출하기

위에서 서비스 스텁(stub)을 생성하면, protoc 컴파일러가 클라이언트 라이브러리도 함께 생성해 줘요. 그러면 클라이언트 계층에서 서비스를 호출하는 건 간단해지죠. 실행하면 다음과 같은 출력이 나와요.

Greeter client received: Hello, Michael!

다음 단계

Dart에서 gRPC를 시작하려면 새로 만든 Dart gRPC QuickStart를 살펴보세요. Greeter 예제를 실행하고 확장하는 방법이 단계별로 나와 있어요. 그다음에는 Dart gRPC 튜토리얼도 확인해 보시고요.

문제가 생기면 이슈(issue)를 등록해 주세요. 보고 싶은 변경이나 추가 사항에 대한 피드백도 기꺼이 받을게요. 예를 들어 gRPC-Web 프로토콜 지원 요청을 여러 번 받았는데요. 빠르게 피드백을 주는 구체적인 방법 중 하나는 이슈의 맨 위 댓글에 있는 GitHub 좋아요 👍 버튼을 눌러 '투표'하는 거예요.

Dart용 gRPC로 무엇을 만들어 주실지 기대하고 있어요!

더 알아보기