[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#에서 직렬화와 역직렬화의 차이점을 살펴보았습니다.