Protocol Buffers의 이해

Protocol Buffers는 무엇인가?

백엔드 서비스가 필요한 대부분의 앱의 경우 데이터 전송 및 저장이 중요합니다. 개발자는 일반적으로 JSON 또는 XML을 사용하여 데이터를주고 받게 설계하고 나중에 그것을 파싱해서 사용합니다.

직렬화 및 역 직렬화에 도움이되는 많은 API 및 프레임 워크가 있지만 버전 코드 및 백엔드 모델 변경을 지원하는 객체 파서 업데이트와 같은 유지 관리 문제가 발생합니다.

새로운 백엔드 및 프런트 엔드 서비스를 강력하게 만드는 것이 중요하다면 Google이 구조화 된 데이터를 직렬화하기 위해 개발 한 언어와 무관한 프로토콜 버퍼를 사용하는 것이 좋습니다. 많은 경우에 JSON 및 XML과 같은 다른 일반적인 방법보다 더 유연하고 효율적입니다.

주요 기능 중 하나는 데이터 구조를 한 번 정의 할 수 있다는 것입니다. 컴파일러는 Swift!를 포함하여 지원되는 모든 언어로 코드를 생성 할 수 있습니다. 생성 된 클래스 파일은 쉽게 객체를 읽고 쓸 수 있습니다.

.proto 파일의 정의 예시

syntax = "proto3";

message Contact {

  enum ContactType {
    SPEAKER = 0;
    ATTENDANT = 1;
    VOLUNTEER = 2;
  }

  string first_name = 1;
  string last_name = 2;
  string twitter_name = 3;
  string email = 4;
  string github_link = 5;
  ContactType type = 6;
  string imageName = 7;
};

컴파일러는 메시지를 해석하고 값 유형을 선택한 언어에 매핑하고 적절한 모델 객체 파일을 생성합니다.

장점

  • 빠르고 작음 : XML보다 3-10 배 작고 20-100 배 빠릅니다.
  • 안전한 타입 : 프로토콜 버퍼는 Swift와 같은 타입 안전합니다. 프로토콜 버퍼 언어를 사용하면 모든 속성에 대한 유형을 지정해야합니다.
  • 자동 역직렬화 : 단순히 프로토 파일을 업데이트하고 데이터 액세스 클래스를 재생성하면됩니다.
  • 공유 : 지원되는 언어로 다양한 플랫폼에서 모델을 공유 할 수 있으므로 플랫폼 간 작업시 작업이 줄어 듭니다.

단점

  • 시간과 노력 : 변환 비용으로 인해 기존 시스템에서 프로토콜 버퍼를 조정하는 것이 효과적이지 않을 수 있습니다. 또한 새로운 언어 구문을 학습해야합니다.
  • 사람이 읽을 수 없음 : XML과 JSON은보다 설명하기 쉽고 읽기 쉽습니다. 원시 형식의 프로토콜 버퍼는 자체 설명이 아닙니다. .proto 파일이 없으면 데이터를 해석 할 수 없습니다.
  • 적합하지 않음 : XSLT와 같은 스타일 시트를 사용하려는 경우 XML이 적합합니다. 프로토콜 버퍼가 항상 작업에 가장 적합한 도구는 아닙니다.
  • 지원되지 않음 : 컴파일러가 통신중인 다른 시스템의 언어를 지원하지 않을 수 있습니다.





© 2019. by Jinho Baek

Powered by rowkaxl