[c#] 직렬화와 메세지 큐

이번에는 C#에서 직렬화와 메세지 큐에 대해 알아보겠습니다.

직렬화(Serialization)

직렬화는 객체를 바이트 스트림으로 변환하는 프로세스를 말합니다. 직렬화를 통해 객체는 저장이나 네트워크 통신을 위해 전송될 수 있게 됩니다. C#에서는 System.Runtime.Serialization 네임스페이스를 통해 직렬화를 구현할 수 있습니다.

예제

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

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();
        person.Name = "John";
        person.Age = 30;
        
        BinaryFormatter formatter = new BinaryFormatter();
        using (MemoryStream stream = new MemoryStream())
        {
            formatter.Serialize(stream, person);
            byte[] data = stream.ToArray();
            
            // 전송이나 저장
        }
    }
}

위 예제에서 Person 클래스는 직렬화 가능하도록 [Serializable] 어트리뷰트를 붙였고, BinaryFormatter를 사용하여 객체를 직렬화했습니다.

메세지 큐(Message Queue)

메세지 큐는 비동기 통신을 위한 중간 매개체로서, 보낸 메시지를 안전하게 보관하고 받는 측이 메시지를 읽을 수 있을 때까지 저장하는 시스템을 말합니다. C#에서는 System.Messaging 네임스페이스를 통해 내장된 메세지 큐를 제공합니다.

예제

다음은 C#에서의 메세지 큐 사용 예제입니다.

using System;
using System.Messaging;

class Program
{
    static void Main()
    {
        MessageQueue queue;
        if (!MessageQueue.Exists(@".\private$\myQueue"))
        {
            queue = MessageQueue.Create(@".\private$\myQueue");
        }
        else
        {
            queue = new MessageQueue(@".\private$\myQueue");
        }

        queue.Send("Hello, world!");

        Message msg = queue.Receive();
        Console.WriteLine(msg.Body); // 출력: Hello, world!
    }
}

위 예제에서 MessageQueue 클래스를 사용하여 메세지를 보내고 받을 수 있습니다.

직렬화와 메세지 큐를 이용하면 객체를 안전하게 전송하고, 비동기적으로 처리할 수 있습니다.

더 많은 정보를 원하시면 아래 참고 자료를 확인해 주세요.

참고 자료