직렬화(直列化) 또는 시리얼라이제이션(serialization)은 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다.[1]

오브젝트를 직렬화하는 과정은 오브젝트를 마샬링한다고도 한다.[2] 반대로, 일련의 바이트로부터 데이터 구조를 추출하는 일은 역직렬화 또는 디시리얼라이제이션(deserialization)이라고 한다.

단점

편집

직렬화는 잠재적으로 비공개 구현 세부 정보를 노출하여 추상 데이터 형식의 불투명성을 깨뜨린다. 모든 데이터 멤버를 직렬화하는 사소한 구현은 캡슐화를 위반할 수 있다.

경쟁업체가 호환되는 제품을 만드는 것을 막기 위해 독점 소프트웨어 게시자는 프로그램의 일련화 형식에 대한 세부 정보를 영업 비밀로 유지하는 경우가 많다. 일부는 직렬화된 데이터를 의도적으로 난독화하거나 심지어 암호화하기도 한다. 그러나 상호 운용성을 위해서는 애플리케이션이 서로의 직렬화 형식을 이해할 수 있어야 한다. 따라서 CORBA와 같은 원격 메서드 호출 아키텍처는 직렬화 형식을 자세히 정의한다.

아카이브 및 도서관과 같은 많은 기관에서는 백업 아카이브, 특히 데이터베이스 덤프를 비교적 사람이 읽을 수 있는 직렬 형식으로 저장하여 미래에도 사용할 수 있도록 노력하고 있다.

프로그래밍 언어 지원

편집
  • CFML
  • Ocaml
  • C와 C++
  • 델파이
  • 자바
  • 닷넷 프레임워크
  • 파이썬
  • PHP
  • R
  • REBOL
  • 루비
  • 스몰토크
  • 리스프
  • 하스켈
  • 윈도우 파워셸
  • 줄리아

같이 보기

편집

각주

편집
  1. Marshall Cline. “C++ FAQ: "What's this "serialization" thing all about?". 2015년 4월 5일에 원본 문서에서 보존된 문서. It lets you take an object or group of objects, put them on a disk or send them through a wire or wireless transport mechanism, then later, perhaps on another computer, reverse the process, resurrecting the original object(s). The basic mechanisms are to flatten object(s) into a one-dimensional stream of bits, and to turn that stream of bits back into the original object(s). 
  2. How to marshal an object to a remote server by value by using Visual Basic 2005 or Visual Basic .NET […] Because the whole object is being serialized to the server (marshaling by value), the code will execute in the server's process.

외부 링크

편집