특정 객체 상태를 저장하거나, 네트워크 전송 따위를 지원하기 위해서는 객체의 직렬화가 필요하다.

내가 정리하고자 하는 내용은, c#에서 사용할 수 있는 직렬화 방법 중 크게 두 가지의 종류가 있는데

이를 정리하기 위함이다.


 

참조 : http://stackoverflow.com/questions/1154198/what-are-the-differences-between-the-xmlserializer-and-binaryformatter

http://www.csharpstar.com/serialize-and-deserialize-data-csharp/


 BinaryFomatter  : 객체를 직렬화 하는데, 아웃풋이 바이너리 형태이다. (즉 사람눈으로 바로 읽을 순 없다..ㅠㅠ)



 - Serialization을 할 때, 어셈블리 정보와 타입정보를 포함하기 때문에,

   Deserialization 할 때, 각 객체의 타입을 알고 있어 올바른 객체타입으로 객체를

   만들 수 있다. 또한 생성된 객체들을 하나의 인터페이스로 캐스팅할 수 있다.


 - 성능이 빠르다.

 - .Net에 종속적이다. (Type까지 저장하는거보니, .Net에서만 쓰이는 객체일 수 도있으니까?! 자세히 저장하는 대신, .Net에 종속적인 단점이 있다.)



xmlSerializer : Xml 형태로 아웃풋이 나온다. (xml형태이므로 쉽게 눈으로 읽을 수 있다!)


<Name> Kim sung ji </Name>

<Age> ... </Age> ...

....


- Serialization 할 때, 하나의 스키마로 직렬화 하며,

   오직 public fields와 그의 값들만 기억하며,

   위에서 기억한 것들의 타입 정보는 저장하지 않는다.


- BinaryFomatter 보다 성능은 떨어진다.

 


등등..





Serialization Comparison

'C,C++,C#' 카테고리의 다른 글

C, C# 이벤트, 이벤트 핸들러  (0) 2015.10.08
블로그 이미지

kuku_dass

,