특정 객체 상태를 저장하거나, 네트워크 전송 따위를 지원하기 위해서는 객체의 직렬화가 필요하다.
내가 정리하고자 하는 내용은, 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 보다 성능은 떨어진다.
등등..
'C,C++,C#' 카테고리의 다른 글
C, C# 이벤트, 이벤트 핸들러 (0) | 2015.10.08 |
---|