[c#] 직렬화 방법
C#에서 직렬화(serialization)란 객체를 데이터 스트림으로 변환하는 과정을 말합니다. 이는 객체를 저장하거나 전송하기 위해 사용됩니다.
XmlSerializer를 사용한 직렬화
using System;
using System.IO;
using System.Xml.Serialization;
namespace SerializationExample
{
public class Program
{
public static void Main()
{
Person person = new Person("John", 30);
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (TextWriter writer = new StreamWriter("person.xml"))
{
serializer.Serialize(writer, person);
}
}
}
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person() {}
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
}
위 예제에서는 Person
클래스를 XML 파일로 직렬화하는 과정을 보여줍니다. XmlSerializer
클래스를 사용하여 객체를 직렬화하고, StreamWriter
를 이용하여 파일에 쓰는 방식입니다.
DataContractSerializer를 사용한 직렬화
System.Runtime.Serialization
네임스페이스에 있는 DataContractSerializer
를 사용하면 XML 이외의 형식으로도 직렬화할 수 있습니다.
BinaryFormatter를 사용한 직렬화
BinaryFormatter
는 이진 형식으로 직렬화를 지원합니다. 이 방법은 일반적으로 XML이나 JSON보다 빠르고 용량이 작은데, 이진 형식으로 직렬화하므로 가독성에는 불리합니다.
JSON 및 Protobuf를 사용한 직렬화
데이터를 JSON 형식으로 직렬화하려면 Newtonsoft.Json
또는 System.Text.Json
을 사용할 수 있습니다. Protobuf(Protocol Buffers)는 Google에서 개발한 바이너리 직렬화 포맷으로, C#에서는 protobuf-net
라이브러리를 사용하여 직렬화할 수 있습니다.
C#에서는 다양한 직렬화 방법을 제공하므로, 상황에 맞게 적합한 방법을 선택하여 사용하면 됩니다.