또는

직렬화 란? 그리고 마샬링 이란?

 

직렬화

 

 

1. 직렬화(Serialization)

  객체 데이터를 일련의 byte stream으로 변환하는 작업을 직렬화라고 합니다.

  반대로 일련의 byte stream을 본래의 객체 모양으로 복원하는 작업은 Deserialization 이라고 합니다.

 

2. 마샬링(Marshalling)

  메모리 상에 형상화된 객체 데이터를 적당한 다른 데이터 형태로 변환하는 과정을 말합니다.

  컴퓨터간 데이터 전달 또는 프로그램 간 데이터 전달을 할 때 사용되죠.

  전송된 데이터를 다시 원래의 객체 모양으로 복원하는 작업은 언마샬링(Unmarshalling)이라고 합니다.

 

3. 직렬화와 마샬링의 차이

  직렬화와 마샬링은 사실 상 거의 같은 개념입니다.

  직렬화는 오래 전부터 데이터를 주고 받는 모든 전자 기기에 폭 넓게 사용해오던 개념입니다.

  예를 들면, 위 그림 처럼 레고 블럭으로 만든 빌딩을 먼 거리로 전송한다고 상상을 해 보죠.

  전송 채널은 일반적으로 단일 채널 즉, 1차원적인 일렬로 보낼 수 밖에 없으므로 빌딩 블럭을

  순서대로 해체해서 블럭 하나 하나를 채널을 통해 발송하고, 수신하는 측에서는 이렇게 받은

  하나 하나의 블럭을 약속된 방법에 따라 다시 빌딩의 모습으로 복원하는 거죠.

  이런 직렬화 작업을 컴퓨터 프로그래밍 데이터 처리에 적용한 개념이 마샬링입니다.

  음... 이름만 특이할 뿐이지 똑같은 개념입니다~.

 

  단지 이런 차이점이 있습니다. 컴퓨터의 데이터 처리에는 여러 가지 매개 값들이 오고 갑니다.

  때문에 직렬화된 데이터에 여러 가지 매개 값들도 추가하고 그 리턴 값들도 한꺼번에 집어넣게 되었는데,

  이렇게 좀 더 세분화된 정보 처리기에서의 직렬화 작업을 약간 더 특별하게 마샬링이라고 부르고 있습니다.

  직렬화 작업이 프로그래밍적으로 조금 더 전문화 된 것이지요.

  (그래서 프로그래밍에서 함수나 클래스를 직렬화 할 때 함수 마샬링, 클래스 마샬링 이라고 부릅니다)

 

  즉, 직렬화라는 작업은 마샬링이라는 것이 포함된 폭 넓은 개념입니다. (직렬화 >> 마샬링)

  직렬화 작업들 중에 프로그래밍 작업에서 좀 더 전문화된 세부 개념이 마샬링인 것이지요.

 

 

 

  

 

 

 

 

 

 

 

+ Recent posts