[네트워크] 직렬화
in CS
직렬화 (Serialization)
먼저, 직렬화의 사전적 정의는 다음과 같다.
객체에 저장된 데이터를 I/O 스트림에 쓰기(출력)위해 연속적인(serial) 데이티로 변환하는 것
대부분의 서비스에는 통신이 필요하고, 어떤 프로토콜을 쓰던 간에 컴포넌트 간 데이터 통신(예: 안드로이드 앱 - Python 서버)을 위해서는 프로그래밍 언어나 플랫폼에 독립적인 표준화된 포맷이 필요하다.
예를 들어, Java의 객체를 이런저런 방식으로 바이너리로 변환해서 보내봤자, 다른 언어에는 이에 대한 표준이 없어서 완벽하게 읽을 수 없기 때문에, 직렬화는 컴퓨터 과학에서 매우 중요하다.
정리하면, 객체의 직렬화의 목적은 서드파티에서 객체를 사용하기 위함이다.
json, xml, yaml 등 다양한 직렬화 양식이 있는데, 대부분의 API 서버에서는 JSON을 대표적으로 사용하고 있다.
정리
- A와 B가 통신하려면 특정 프로그래밍 언어에 의존적이지 않은 데이터 포맷이 필요
- 이를 위해 다양한 직렬화 포맷이 있는데, 결국은 JSON이 제일 많이 쓰임
- 송신할 데이터를 JSON 형식으로 인코딩 후 전송하면, 대부분의 프로그래밍 언어가 JSON 파싱을 지원하기 때문에 잘 쓸 수 있음