-
마샬링(Marshalling)과 직렬화(Serialization)기타 2024. 12. 7. 18:40
마샬링(Marshalling)과 직렬화(Serialization)은 모두 데이터를 특정 형식으로 변환하는 과정이지만, 그 목적과 범위에서 차이가 있다.
직렬화(Serialization)
직렬화는 객체의 상태를 저장하거나 전송하기 위해 객체를 바이트 스트림과 같은 원시 데이터 형식으로 변환하는 과정이다. 이를 통해 객체를 파일에 저장하거나 네트워크를 통해 전송할 수 있으며, 나중에 이 바이트 스트림을 역직렬화(Deserialization)하여 원래의 객체로 복원할 수 있다. 직렬화는 주로 동일한 시스템 내에서 데이터를 저장하거나 전송할 때 사용된다.
마샬링(Marshalling)
마샬링은 직렬화와 유사하지만, 주로 서로 다른 시스템이나 프로그래밍 언어 간의 통신을 위해 데이터를 변환하는 과정이다. 이는 원격 프로시저 호출(RPC)에서 함수의 매개변수나 반환 값을 전달할 때 사용되며, 복잡한 객체를 단순한 원시 데이터로 변환하여 전송한다. 마샬링의 반대 과정은 언마샬링(Unmarshalling)으로, 전송된 데이터를 원래의 객체 형태로 복원한다.
차이점
- 목적: 직렬화는 주로 데이터를 저장하거나 동일한 시스템 내에서 전송하기 위한 것이며, 마샬링은 서로 다른 시스템이나 언어 간의 통신을 위함
- 범위: 직렬화는 객체를 바이트 스트림으로 변환하는데 중점을 두지만, 마샬링은 데이터의 구조와 의미를 유지하면서 다른 형식으로 변환하는 것을 포함한다.
- 사용 사례: 직렬화는 파일 저장, 메모리 버퍼, 네트워크 전송 등에 사용되며, 마샬링은 원격 프로시저 호출, 이기종 시스템 간의 데이터 교환 등에 사용된다.
따라서, 직렬화는 객체를 저장하거나 전송하기 위한 변환 가정이며, 마샬링은 주로 이기종 시스템 간의 통신을 위해 데이터를 변환하는 더 포괄적인 과정으로 볼 수 있다.
'기타' 카테고리의 다른 글
Terraform nonsensitive (0) 2024.11.28 Github Pages node_modules 접근 (0) 2021.07.06 Xcode Maximum number of app for free development profiles 문제 해결하기. (0) 2021.04.27