[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#에서는 다양한 직렬화 방법을 제공하므로, 상황에 맞게 적합한 방법을 선택하여 사용하면 됩니다.

참고 자료