본문 바로가기

카테고리 없음

시리얼라이즈의 명사(Serialization) - 직렬화 란 ?

 안녕하세요! 오늘도 포스팅을 하기위해서 왔습니다^^

 이게이게! 1 일 1 포스팅의 장점인거 같아요 !

 저번에 블로그 도오전 했을 때는, 1주 1포스팅을 했는데.. 생각해보니까

그럼 1년을 해도 52개밖에 .. 하지만, 지금은 이미 7개를 넘었고 !

 또한, 1주 간격으로 포스팅 할 때엔 1주 정도면 제가 따로 찾지 않아도

학생으로서는 새로운 뭔가를 할 수밖에 없는 기간이었으니, 커뮤니티나 IT기사 같은 것을

찾지 않고도 충분히 새로 알게된 걸 검색하며 포스팅 할 수 있었습니다.

 반면, 1일 1포스팅을 하니, 실습과 더불어 새로운 뭔가를 매일 알게되는 것은 스스로

찾지 않으면 사실상 불가능합니다..ㅎㅎ 그래서 저 스스로 뭔가를 찾아보려 커뮤니티나 기사를

참고하게 되구요! 그것 자체가 도움이 되지 않을까 싶네요^^

 

 자, 그럼! 시리얼라이즈 시작합니다..

 

 시리얼라이즈,, 그것은 얼마 전 포스팅 했던, 병렬처리 기억하세요 ? 

병렬화의 반댓말로서, 직렬로 배열하다~ 라고 생각해주시면 좋겠어요!

 뭘 직렬로 배열할건데????? 음, 데이터요! ㅋㅋ

 데이터를 직렬로 배열하는 것입니다. 저는 처음 들었던건 자바의 Sealizable?인가 였는데, 

node.js 서버로 json객체를 보내려고 할 때, 사용해야하나 생각했던 것 같네요!

 

 아~ 그럼 데이터를 직렬로 배열한다는 것은 무슨 말일까요??

 프로그램 상에서 객체의 데이터는 제멋대로 퍼져있습니다.즉, 오브젝트 요소들이 실제 메모리 상에선

비연속적으로 나열되어 있습니다.

 msdn에서 직렬화의 정의를 발췌해 보았습니다.

            직렬화란,

                     "직렬화는 객체를 바이트 스트림으로 변환하여 객체를 저장하거나 메모리,

                             데이터베이스 또는 파일로 전송하는 프로세스"

                  출처:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/index

 

 위에서의 정의처럼 바이트 배열 형태로 변환하는 것이구나! 라는 것을 알 수 있죠?

 바이트 형태로 바꾸면, 무엇이 좋아서 그렇게 할까? 하는 생각할 수 있을 것 같은데요!

 

 일단, 1. 주소화된 데이터, int형, float.... 등등 수많은 데이터 형식이 있는데, 그것들이 통합되는 효과가 생기겠죠?

 또한, 2. 저장/전송하는 데이터는 값형식의 데이터만 가능합니다.. 즉, 메모리 번지 주소나 오브젝트 형태의 데이터는

저장/전송이 불가능합니다.

  그래서 우리는 '직렬화' 합니다..

 

 직렬화한 데이터는 저장/전송되고 다시 그 데이터를 사용할 때엔, '역직렬화(deSealization)' 하여 사용합니다.

 조금은 번거롭더라도! 다른 도메인으로 전송하거나 스토리지에 데이터를 저장할 때엔 직렬화 ! 기억해주세요^^

(추가로 실제로는 대부분이 암호화 하여, 전송/저장하여 보안을 강화하는 방식으로 사용합니다.)

 

 매일 포스팅 하느라 힘들어 내용이 짧은 점 죄송해요!

실습끝나면 더 알차게 작성하도록 노력하겠습니다.

감사합니다^^