[c#] C# 직렬화와 메시지큐

C#에서는 객체를 메모리나 디스크에 저장하거나 네트워크를 통해 전송하기 위해 직렬화(serialization) 기술을 사용합니다. 직렬화는 객체를 바이트 스트림으로 변환하는 과정으로, 이는 객체의 상태를 보존하고 다시 복원할 수 있도록 합니다. 이러한 기술은 객체를 파일로 저장하거나 네트워크를 통해 다른 시스템으로 전송하는 데 사용됩니다.

또한, C#에서는 메시지큐(Message Queue)를 통해 프로세스 간 통신을 지원합니다. 메시지큐는 비동기적으로 메시지를 교환하고, 시스템 간의 결합도를 줄이며 안정성을 향상시킵니다.

직렬화(Serialization)

C#에서는 객체를 직렬화하는 데에 BinaryFormatter, XmlSerializer, DataContractSerializer, JSON.NET 등의 여러 가지 방법을 제공합니다. Object를 직렬화하여 MemoryStream에 저장할 수 있으며, 파일이나 네트워크 스트림을 통해 전송할 수도 있습니다. 아래는 간단한 직렬화 예제입니다.

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

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

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

        BinaryFormatter formatter = new BinaryFormatter();
        using (MemoryStream stream = new MemoryStream())
        {
            formatter.Serialize(stream, person);

            // Save to a file
            File.WriteAllBytes("person.bin", stream.ToArray());
        }
    }
}

메시지큐(Message Queue)

C#에서는 System.Messaging 네임스페이스를 통해 메시지큐를 다룰 수 있습니다. 아래는 간단한 메시지큐 사용 예제입니다.

using System;
using System.Messaging;

class Program
{
    static void Main()
    {
        string queuePath = ".\\Private$\\MyQueue";
        if (!MessageQueue.Exists(queuePath))
            MessageQueue.Create(queuePath);

        MessageQueue queue = new MessageQueue(queuePath);
        queue.Send("Hello, world!");
    }
}

위 예제는 MessageQueue를 생성하고 메시지를 전송하는 간단한 예제입니다.

직렬화와 메시지큐는 C#에서 다른 시스템과의 통신이나 데이터 교환에 필수적인 기술이며, 이러한 기술의 이해는 다양한 애플리케이션 개발 시에 필수적입니다.

참고 자료

위의 링크들은 Microsoft Docs와 GitHub에서 C# 직렬화와 메시지큐에 관한 자세한 내용과 예제 코드들을 확인할 수 있습니다.