Protocol Buffers
- Google에서 개발한 데이터 직렬화 형식으로, 구조화된 데이터를 이진 형식으로 효율적이고 컴팩트하게 저장하여 네트워크 연결을 통해 더 빠르게 전송할 수 있음
- 작성된 프로그램을 다른 플랫폼으로 쉽게 포팅할 수 있고, 다양한 응용프로그램에서 사용할 수 있는 구조화된 데이터를 만드는 효율적이고 강력한 방법
- 언어 독립적 구문을 사용하면 선택한 서로 다른 프로그래밍 언어를 사용하여 작성된 프로그램이 서로 안정적으로 통신할 수 있음
- 구조화된 데이터는 바이너리 형식으로 저장되기 때문에 XML이나 JSON과 같은 텍스트 기반 형식보다 훨씬 작아 네트워크를 통한 전송이 더 빠름
- 확장하기 쉽게 설계되어 빠르게 변화하는 데이터 구조와 새로운 기능을 처리하는 데 이상적
활용
- 시스템 간의 데이터 스트림으로 사용할 수 있는 효율적인 API를 만드는 데 사용할 수 있음
- 응용 프로그램 간의 RPC 통신에 사용 가능
- 애플리케이션이 동일한 메시지 구조를 사용하여 데이터를 단순히 직렬화 및 역직렬화할 수 있으므로 애플리케이션이 서로 효율적으로 쉽게 통신할 수 있음
응용 프로그램 간 RPC 통신
RPC: 응용 프로그램이 네트워크를 통해 서로 통신할 수 있도록 하는 통신 유형
- 클라이언트에서 서버로 요청을 보내고 응답 받는 방식으로 작동
- 요청은 일반적으로 매개변수 및 반환 값과 같이 실행해야 하는 절차에 대한 정보가 포함된 데이터 패킷으로 전송됨
- 서버가 패킷을 수신하면 이를 처리하고 관련 데이터 또는 결과와 함께 응답을 반환
gRPC
google 사에서 개발한 오픈소스 RPC 프레임워크
기능 | gRPC | HTTP API |
계약 | 필수 | OpenAPI |
프로토콜 | HTTP/2 | HTTP |
페이로드 | Protobuf | JSON |
규범 | 엄격한 사양 | 느슨함, 모든 HTTP가 유효함 |
스트리밍 | 클라이언트, 서버, 양방향 | 클라이언트, 서버 |
브라우저 지원 | N | Y |
보안 | 전송(TLS) | 전송(TLS) |
클라이언트 코드 생성 | Y | 도구 |
'Old > Network' 카테고리의 다른 글
게임 네트워크 엔진 (0) | 2023.07.31 |
---|---|
게임 네트워킹 (0) | 2023.07.27 |
게임 서버와 클라이언트 (0) | 2023.07.24 |
Socket Programming (0) | 2023.07.24 |
컴퓨터 네트워크 (0) | 2023.07.24 |