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# 직렬화와 메시지큐에 관한 자세한 내용과 예제 코드들을 확인할 수 있습니다.