/직렬화

직렬화(Serialization)!?

직렬화

객체의 상태를 저장하기 위해서 객체를 byte stream 으로 변환하는 것을 의미한다. 그 반대는 deserialization(역직렬화) 라고 한다.
흠.. 직렬화를 알고 싶었는데 stream?이 또 뭐란 말인가? 컴퓨터의 stream에 대한 정의는 다음과 같다.

스트림

배열이나 문자열 같은 데이터 컬렉션을 말하며, 자료를 입출력하기 위하여 사용하는 것이다. 프로그램과 입출력 장치 사이에서 입출력 자료들을 중계하는 역할을 담당한다. 즉, 입출력 과정에서 데이터들이 자유롭게 움직일 수 있도록 중간 다리 역할을 함

보통 직렬화는 서로 다른 패러다임의 프로그램의 입출력 데이터가 이동되어야 할 때 사용하는데,
사실 이 직렬화의 개념을 이해하기 위해선 마샬링이란 개념부터 이야기 해야 되는데..ㅋㅋ 그럼 마샬링이란건 또 뭘까!?

마샬링

객체의 메모리 구조를 저장이나 전송을 위해서 적당한 자료형태로 변형하는 것을 의미함.

Marshalling 은 보통 서로 다른 컴퓨터 혹은 서로 다른 프로그램 간에 데이터가 이동되어야 할 경우 사용됨.

오케이 그럼 직렬화, 마샬링 에 대해서 어느정도 감을 잡긴 했는데 마샬링과 직렬화의 구체적인 차이는 뭘까 언뜻 보기엔 둘다 객체를 저장하려고 데이터 변형을 하는 것 같은데?

직렬화, 마샬링의 차이

마샬링은 매개 변수를 출발지에서부터 가져 오는 것이지만 직렬화는 구조화 된 데이터를 byte stream과 같은 기본 형식으로 복사하거나 복사하는 것이라고 한다. 이러한 의미에서 직렬화는 마샬링을 수행하는 수단 중 하나이며 일반적으로 값별 의미 전달을 구현합니다.

결론

아하 직렬화는 마샬링을 수행하는 수단 중 하나이자, 객체의 상태를 저장하기 위해서 byte stream 형태로 변환해주는 행위이구나

thxwelchs

thxwelchs

thxwelchs

Read More
...