Community

옵저버블 플러터: gRPC

옵저버블 Flutter에서 크레이그 르벤스와 함께 Somnio Software의 공동 창립자이자 CTO인 지안프랑코 파파가 GRPC의 강력한 기능을 설명합니다. Google에서 개발한 원격 프로세스 호출 시스템인 GRPC와 이를 Dart에서 구현하는 방법에 대해 알아보세요. Flutter 전문가인 지안프랑코는 커뮤니티에서의 경험과 2018년 베타 버전 이후 Flutter의 성장에 대해 공유합니다. 이 Dart 중심 개념에 대해 자세히 알아보고 프로젝트를 향상시킬 수 있는 방법을 살펴보세요. Dart에서 풀 스택 앱을 만들기 위한 다용도 도구인 GRPC의 강력한 기능을 활용하세요. Dart에 능숙한 Flutter 개발자는 이제 언어를 전환하지 않고도 프론트엔드 및 백엔드 애플리케이션을 모두 개발할 수 있습니다. Dart Frog 및 Shelf와 같은 다른 도구도 존재하지만 GRPC는 다양한 프로그래밍 언어와의 원활한 통합을 제공합니다. GRPC의 언어 간 호환성은 업계의 판도를 바꾸고 있습니다. 풀 스택 Dart 애플리케이션으로 클래스를 재사용하고 중복된 로직을 최소화하세요. 백엔드에서 Dart를 사용할 수 없더라도 GRPC는 JavaScript, Python, Java와 같은 여러 언어로 자동 생성된 바인딩을 통해 언어 장벽을 뛰어넘는 커뮤니케이션을 간소화합니다. 또한 GRPC의 기반이 되는 프로토버프를 마스터하는 것은 일상 업무에 프로토버프가 필수적이기 때문에 Google에서 일하고자 하는 사람들에게 자산이 될 수 있습니다. 따라서 풀 스택 Dart 애플리케이션에 GRPC의 잠재력을 활용하고 개발 기술을 새로운 차원으로 끌어올리기 위한 첫걸음을 내딛으세요. 이 프로젝트는 프론트엔드(Flutter로 빌드), 백엔드(gRPC 사용), 프로토콜 버퍼를 위한 공유 폴더 "Protos"의 세 가지 폴더로 구성됩니다. 이 접근 방식의 주요 장점 중 하나는 프론트엔드와 백엔드 간에 코드를 재사용할 수 있어 개발 및 유지 관리를 간소화할 수 있다는 것입니다. 시작하려면 공식 gRPC 문서를 검토하고 프로토콜 버퍼에 익숙해지는 것이 좋습니다. 그런 다음 gRPC와 Dart를 사용하여 풀스택 앱을 만들어 보세요. Dart를 사용하여 프로토콜 버퍼 모델을 생성하려면 다음 단계를 따르세요: 1. "프로토콜" 폴더를 생성합니다. 2. "프로토콜" 폴더 안에 lib 폴더가 있는 패키지를 생성합니다. 3. 3. 패키지에 필요한 종속성(protobuf 및 gRPC)을 추가합니다. 4. lib 폴더 안에 "protos" 폴더를 생성합니다. 5. "protos" 폴더 안에 .proto 파일(예: todo.proto)을 생성하여 모델을 정의합니다. 6. "메시지" 키워드를 사용하여 클래스와 유사한 구조를 정의합니다. 7. 이름과 증분 정수 코드가 포함된 특수 표기법을 사용하여 속성을 정의합니다. 구문 세부 사항과 예제는 프로토버프 설명서를 참조하세요. "메시지" 키워드는 다른 언어의 "클래스" 키워드와 유사하지만 컴퓨터 간에 전송할 수 있는 데이터를 정의하는 데 사용된다는 점을 기억하세요. GRPC와 Protobuf를 사용하여 프론트 엔드와 백엔드 서비스 간에 메시지를 효율적으로 교환하세요. 이러한 기술은 메시지 크기를 줄이고 바이너리 형식으로 데이터를 전송하여 JSON보다 더 효율적입니다. proto3 구문과 int32와 같은 기본 유형을 사용하여 첫 번째 메시지를 정의하는 것으로 시작하세요. 인코딩을 위해 각 필드에 고유한 증분 값을 할당합니다. 이 예제에서는 ID, 제목, 완료 상태가 포함된 할 일 메시지를 만듭니다. Protobuf의 강점은 Dart와 같은 다양한 언어로 모델을 자동 생성할 수 있다는 점입니다. 이를 통해 여러 팀과 프로그래밍 언어 간에 모델을 원활하게 공유할 수 있으므로 모델에 대한 단일 소스를 구축할 수 있습니다. 아래에 요약된 단계를 따라 Dart를 사용하여 프론트엔드 및 백엔드를 위한 공유 패키지를 생성하시기 바랍니다: 1. 생성된 클래스를 위한 새 폴더를 생성합니다. 2. proto C 플러그인을 다운로드하고 활성화한 다음 경로를 내보냅니다. 3. proto C 명령줄을 사용하여 프로토 파일에서 Dart 클래스를 생성합니다. 4. 라이브러리에서 생성된 파일을 내보냅니다. 5. 불필요한 예제를 제거합니다. 6. 모델을 정의하고 프론트엔드 및 백엔드에서 패키지를 공유합니다. 7. 별도의 백엔드 패키지를 생성합니다. 8. 서버에 콘솔 앱 템플릿을 사용합니다. 9. 프로토콜 패키지를 서버 폴더로 가져옵니다. 이 단계를 수행하면 할 일 개체에 액세스할 수 있으며 프런트 엔드와 백엔드 간에 패키지를 효율적으로 공유할 수 있습니다. 서비스를 생성하려면 ToDoServiceBase를 확장하고 메서드를 재정의하여 서비스 클래스를 구현해야 합니다. 지금은 하드 코딩된 ToDo를 반환할 수 있습니다. 이름 매개변수를 사용하거나 프로토 버프에서 빈 매개변수가 있는 기본 구현을 사용할 수 있습니다. ID 매개변수의 경우 새 매개변수를 생성하는 대신 요청에서 가져올 수 있습니다. 완성된 패턴이 없으므로 거짓으로 설정하고 리스팅 제목을 기반으로 제목을 제공합니다. 마지막으로 추적 키워드를 추가하고 서버 내부에서 이 서비스를 사용해야 합니다. 모든 작업을 완료하려면 현재 사용 가능한 웹 애플리케이션에서는 jrpc가 잘 작동하지 않으므로 Android iOS 및 macOS용 템플릿을 사용하여 Flutter에서 클라이언트 앱을 만들어야 합니다. 서버를 시작하려면 "dart server.dart"를 실행하고 포트 8080에서 수신 대기 중인지 확인합니다. 모든 것이 제대로 작동하는지 테스트하려면 macOS에서 랩을 실행하거나 iOS/Android에 맞게 조정하세요. GRPC를 사용하면 서버에서 클라이언트로 스트리밍할 수 있습니다. 이제 GRPC를 지원하는 Postman을 테스트에 사용하세요. 소켓과 관련된 오류가 발생하면 Xcode를 열고 구성에서 특수 매개 변수를 구성합니다. Flutter에서 GRPC를 사용해도 블록이나 리버 포드와 같은 상태 관리 솔루션에 영향을 미치지 않습니다. 또한 메시지는 클래스보다는 구조체에 가깝습니다. 새 속성을 추가하거나 선택적 필드를 필수 필드로 변경하는 등 API를 변경할 때는 변경 사항을 버전 관리할 것을 권장합니다. 이 작업은 다른 언어를 사용할 수 있는 마이크로서비스 아키텍처에서 유용한 프로토버프를 사용하여 수행할 수 있습니다. 서버를 업데이트하려면 클라이언트 앱도 업데이트해야 합니다. 마이크로서비스 아키텍처에서는 한 번에 모두 업데이트할 필요가 없는 서비스 전반의 업데이트를 처리하기 위한 전략을 세우는 것이 중요합니다. Google에서는 업데이트를 효과적으로 처리하기 위해 필수 필드를 사용합니다. 이 기술을 더 자세히 살펴보고 싶으시다면 한번 사용해 보시기 바랍니다.

알림

알림이 없습니다