[c#] 직렬화와 역직렬화의 차이

이번 포스트에서는 C#에서 직렬화와 역직렬화의 차이에 대해 알아보겠습니다.

1. 직렬화(Serialization)

직렬화란 객체를 데이터 스트림으로 변환하는 과정을 말합니다. 우리가 C#에서 클래스나 구조체를 직렬화하면, 해당 객체들은 바이트 스트림으로 변환됩니다. 이는 객체의 상태를 저장하거나 전송하기 용이하게 만들어주는데 유용합니다.

다음은 C#에서의 직렬화 예제입니다.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Person
{
    public string Name;
    public int Age;
}

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.Name = "Alice";
        person.Age = 30;

        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("person.bin", FileMode.Create, FileAccess.Write, FileShare.None);
        formatter.Serialize(stream, person);
        stream.Close();
    }
}

2. 역직렬화(Deserialization)

반대로, 역직렬화란 데이터 스트림을 객체로 변환하는 과정을 말합니다. 이는 직렬화된 데이터를 읽고, 원래 객체의 형태로 복원하는 과정입니다.

다음은 C#에서의 역직렬화 예제입니다.

class Program
{
    static void Main()
    {
        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("person.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
        Person person = (Person)formatter.Deserialize(stream);
        stream.Close();

        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}

결론

직렬화와 역직렬화는 C#에서 객체를 데이터로 변환하고, 다시 데이터를 객체로 복원하는 중요한 작업입니다. 이를 통해 데이터를 파일에 저장하거나 네트워크를 통해 전송하는 등의 작업을 수행할 수 있습니다.

이상으로 C#에서 직렬화와 역직렬화의 차이점을 살펴보았습니다.