이론

직렬화

월러비 2024. 4. 6. 14:19

직렬화 란?

  • 시리얼라이제이션(serialization)은 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장, 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다.
  • 오브젝트를 직렬화하는 과정은 오브젝트를 마샬링한다고도 한다.
  • 반대로, 일련의 바이트로부터 데이터 구조를 추출하는 일은 역직렬화 또는 디시리얼라이제이션(deserialization)이라고 한다.

직렬화 특징

  • 직렬화는 개체를 저장하거나, 메모리, 데이터베이스 또는 파일로 전송하기 위해 개체를 바이트 스트림으로 변환하는 프로세스다.
    • 역직렬화는 반대로 바이트 스트림으로 변환한 데이터를 다시 객체로 재구성하는 과정이다.
  • 개체는 스트림(Stream)으로 직렬화되어, 데이터뿐 아니라 버전, 문화권 및 어셈블리 이름과 같은 개체 형식에 대한 데이터를 운반할 수 있다.

직렬화 종류

  1. 이진(Binary) 직렬화 : 이진 형식에서 클래스형식으로 또는 그 반대로 변환한다.
FileStream stream = new FileStream("data.bin", FileMode.Create);
  1. XML 직렬화 : XML 형식에서 클래스 형식으로 또는 그 반대로 변환한다.
StreamWriter wirter = new StreamWriter("data.xml");
  1. Json 직렬화 : Json 형식에서 클래스 형식으로 또는 그 반대로 변환한다. (가장 많이 사용된다.)
string json = System.Text.Json.JsonSerializer.Serialize(변수명);

직렬화 단점

  • 직렬화는 잠재적으로 비공개 구현 세부 정보를 노출하여 추상 데이터 형식의 불투명성을 깨뜨린다.
    • 모든 데이터 멤버를 직렬화하는 사소한 구현은 캡슐화를 위반할 수 있다.
  • 아카이브 및 도서관과 같은 많은 기관에서는 백업 아카이브, 특히 데이터베이스 덤프를 비교적 사람이 읽을 수 있는 직렬 형식으로 저장한다.

'이론' 카테고리의 다른 글

CPU 레지스터  (0) 2024.04.09
I/O 버스  (0) 2024.04.07
마샬링  (0) 2024.04.05
Race Condition  (0) 2024.04.05
Sprite Sheet  (0) 2024.04.03