[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
클래스를 사용하여 메세지를 보내고 받을 수 있습니다.
직렬화와 메세지 큐를 이용하면 객체를 안전하게 전송하고, 비동기적으로 처리할 수 있습니다.
더 많은 정보를 원하시면 아래 참고 자료를 확인해 주세요.