바이너리화 참고 - https://hijjang2.tistory.com/855?category=882384

 

 

 

 

개념할당된 클래스를 바이너리화하는 것을 직렬화라고 합니다.

 

이 직렬화를 하는 이유에 대해서는 클래스의 상태를 저장 혹은 소켓 통신을 통해 전송하기 위해서 사용합니다.

 

최근에는 Json형태로 데이터를 저장하는 경우가 많아서 직렬화를 잘 사용하지 않는데 Json형태로 저장하는 것은 Class에서 취득할 수 있는 부분까지 저장하는 것이고 private까지 저장하는 것은 아무래도 힘듭니다.

 

뭐 하고자 하면 Reflection을 통해서도 할 수 있겠지만, 그렇게 하는 것보다는 직렬화를 해서 클래스의 상태를 저장하는 것이 더 효율적이라고 할 수 있습니다.

 

 

 

 


 

 

 

직렬화 단점

직렬화는 클래스의 상태를 가장 편하게 데이터화 할 수 있으나 몇가지 단점이 있습니다.

 

첫번째는 이 직렬화된 데이터를 메모장에서 열어보면 사람이 이해하기 힘든 구조로 되어있습니다. 즉, 직렬화된 데이터는 역직렬화를 하기 전까지는 데이터를 알 수가 없습니다.

그의 반해 json은 String형태로 되어 있기 때문에 메모장으로 열어도 확인이 가능하고 직접 수정도 가능합니다. 직렬호 데이터는 아무래도 그게 힘드네요.

 

두번째플렛폼의 호환성을 좋지 않습니다. 즉, java에서 직렬화 시킨 데이터는 C#에서 역직렬화가 되지 않습니다. 정확하게는 되지 않는 것은 아닙니다만, 정보의 유실이 발생할 수 있습니다.

그리고 클래스가 변경되면 역직렬화시에 데이터 유실이 생기기 때문에 직렬화를 잘 사용하지를 않습니다.

 

 

 

결과