직렬화와 역직렬화
직렬화란 추상적인 object(객체)를 물리적으로 전송 및 저장하기위해 단순하고 연속적인 텍스트 파일로 변환하는 과정. 반대로 텍스트 파일을 오브젝트로 변환하는 것이 역직렬화이다.
텍스트 파일 형태로는 Bytes, XML, JSON, YAML 등이 있다.
직렬화를 하는 이유?
- 오브젝트는
메모리
에 저장되고, string과 byte 등의 데이터는 드라이브
및 통신선
에 저장이 되어 직렬화 과정이 있어야 물리적으로 전송, 저장할 수 있기 때문이다.
예시1)
게임 엔진 에디터로 작업을 하고 에디터를 껐다 켜도 작업이 저장되어 있는 이유?
A메모리에 저장된 오브젝트를 직렬화하여 텍스트 파일로 저장해두었다가, 다시 게임 엔진 에디터 키면 역직렬화로 불러옴
예시2)
1번 컴퓨터의 오브젝트를 운영체제, 프로그래밍 언어가 다른 2번 컴퓨터로 전송하기 위해서는 메모리에 저장된 추장적인 오브젝트를 직렬화하여 01010111 바이트 데이터로 바꾸고 물리적인 회선으로 전송해주고, 2번 컴퓨터에서는 역직렬화로 실제 존재하는 오브젝트로 받음
주요 직렬화 데이터 알기
1) XML
- HTML처럼 여는 태그와 닫는 태그를 사용하는 형태이고 태그명은 원하는대로 정할 수 있다.
- VSCode에서 보면 띄어쓰기, 줄바꿈이 되어 있어 구조화되어 보이지만 원래는 XML minify를 사용하여 한줄로 만들어져 있는 형태이다.
- 가독성이 좋지 않다.
- 안전한 상태에서 개발하고 싶으면, JSON보다 스키마를 사용하여 데이터 무결성을 검증할 수 있는 XML을 사용한다.
2) JSON
- 속성-값 쌍, 배열 자료형 또는 기타 모든 시리얼화 가능한 값 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
- 간결하고 가독성이 좋음
- HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 주로 사용
참고자료)
https://www.youtube.com/watch?v=qrQZOPZmt0w
https://www.youtube.com/watch?v=55FrHTNjTCc