본문 바로가기

Programming/Base

[Base] Marshalling, Serializable

Marshalling(마샬링)


서로 다른 컴퓨터나 서로 다른 프로그램 간에 데이터가 이동되어야 할 때, 객체의 메모리 구조를 저장이나 전송을 위해서 적당한 자료형태로 변형 ↔ Unmarshalling(언마샬링)

Serializable(직렬화)


객체의 상태를 저장하기 위해 객체를 byte stream으로 변환

  1. XML : 개체를 XML로 변환하거나 네트워크를 통해 전송하거나 파일/db에 저장
  2. JSON : Object를 Json(Javascript Object Notation)으로 변환하여 동일한 작업을 수행
  3. Java에서 Serializable interface로 사용

안드로이드에서의 Serializable - http://virusworld.tistory.com/65

Marshalling vs Serializable


마샬링은 원격 프로시저를 호출하는 것에서 함수의 parameter 값들, return 값들을 전달
보통 마샬링은 여기저기에서 parameter 들을 얻는 반면, 직렬화는 구조화된 데이터를 byte stream과 같은 primitive 형식 혹은 그 반대로 복사를 하는 것을 의미
직렬화는 객체를 실제로 구현하는 코드가 아님, 마샬링은 In Marshalling Object가 직렬화 (멤버 데이터가 직렬화)되어 + *Codebase가 첨부

직렬화(Serializable)은 마샬링(Marshalling)의 일부

*CodeBase

Object의 구현을 검출 할 수 있는 Object의 수신 측에 통지하는 정보


Parcel


IBinder를 통해 보낼 수 있는 메시지(data, object reference)를 위한 container
Parcelable interface를 이용하여 Data 통신

[Android] Serializable vs Parcelable

Android에서 컴포넌트간에 Data Class 전송은 Serializable이나 Parcelable을 사용하여 객체를 직렬화 한 후 주고 받음
Android에서는 Parcelable을 권장함.(이유 : Serializable은 Java의 Reflection을 사용하기 때문에 속도가 느림)

출처 : Android Parcelable(Java의 Serializable과 차이)