Serializing 하는 이유

·2022년 6월 16일
0

DRF-serializer

목록 보기
1/3
post-thumbnail

직렬화

  • 프로그래밍 언어 내의 object는 직렬화를 거친 형태로 다른 컴퓨터/네트워크와 통신한다.
    • HTTP
    • DB
    • HTP ..

Object 개요

  • Attribute를 가지는 구조화된 데이터이다. (class, struct, ...)
  • Object와 Attribute는 데이터 그 자체가 아니라 데이터를 저장하고 있는 메모리의 주소값이다.

Object를 네트워크로 전송할 때 문제점

Object를 구성하는 값을 그대로 네트워크를 통해 전송한다면 문제점이 발생한다.

  • 데이터를 전달받은 컴퓨터는 전달받은 메모리 주소값을 통해 데이터에 접근하더라도, 메모리 주소값이 가르키는 데이터와 같을리가 없다.
  • 데이터를 전달받더라도 양쪽 컴퓨터에서 약속한 데이터의 구조가 명시되어 있지 않으므로, 원하는 데이터가 무엇인지, 위치가 어딘지 알 수가 없다.

직렬화로 문제점 해결

이 때 필요한 것이 직렬화이다.

  • Object의 메모리 주소 값을 메모리 주소가 가르키고 있는 데이터로 변환해준다. (마샬링)
  • 약속한 구조화된 텍스트 형태로 변환한다. (JSON or XML)

전달받은 JSON, XML파일은 역직렬화를 통해 상대방이 원하는 프로그래밍 언어의 객체로 변환된다.

HTTP header, metadata로의 직렬화

  • JSON, XML으로의 변환은 HTTP body에 필요한 bytestream형태로 바꾸는 과정에서 필요한 직렬화이다.
  • WebFramework에서 생성한 metadata, header값은 cgi 변수를 통해 웹서버에서 직렬화된다. (Python WebFramework는 WSGI 변수를 통해 HTTP 메시지(바이트 형태로 변환된다.)
profile
Ben

0개의 댓글