반응형
C#에서 객체를 직렬화 및 역직렬화하는 여러 가지 방법 중, 성능과 효율성 측면에서 뛰어난 MessagePack-CSharp에 대해 알아보겠습니다. MessagePack는 이진 형식을 사용하여 JSON보다 더 작은 크기와 더 빠른 처리 속도를 제공합니다.
MessagePack-CSharp 라이브러리 설치
먼저, 프로젝트에 MessagePack-CSharp 라이브러리를 설치해야 합니다. NuGet 패키지 관리자를 사용하여 설치할 수 있습니다.
직렬화 및 역직렬화를 위한 클래스 준비
MessagePack를 사용하여 직렬화 및 역직렬화할 클래스에 [MessagePackObject] 특성을 추가하고, 모든 필드 또는 속성에 [Key] 특성을 지정합니다.
using MessagePack;
[MessagePackObject]
public class Person
{
[Key(0)]
public int Id { get; set; }
[Key(1)]
public string Name { get; set; }
[Key(2)]
public int Age { get; set; }
}
객체 직렬화 및 역직렬화
MessagePackSerializer의 Serialize 및 Deserialize 메서드를 사용하여 객체를 직렬화하고 역직렬화할 수 있습니다.
using System;
using MessagePack;
class Program
{
static void Main(string[] args)
{
// 객체 생성
Person person = new Person { Id = 1, Name = "John Doe", Age = 30 };
// 객체 직렬화
byte[] serializedData = MessagePackSerializer.Serialize(person);
Console.WriteLine($"Serialized data: {BitConverter.ToString(serializedData)}");
// 객체 역직렬화
Person deserializedPerson = MessagePackSerializer.Deserialize<Person>(serializedData);
Console.WriteLine($"Deserialized person: Id={deserializedPerson.Id}, Name={deserializedPerson.Name}, Age={deserializedPerson.Age}");
}
}
MessagePack는 이진 형식을 사용하여 JSON과 비교하여 더 작은 크기와 더 빠른 처리 속도를 제공합니다. 그러나 이진 형식으로 인해 가독성이 떨어질 수 있으며, 특정 경우에만 적합한 솔루션입니다.
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] LINQ의 종류와 예제 (0) | 2023.06.09 |
---|---|
[C#] Log4net을 이용한 Logger 구현 (0) | 2023.04.18 |
[C#] List<object>를 특정 클래스 타입의 List로 캐스팅하는 방법 (0) | 2023.03.27 |
[C#] Class & Struct Performance Test (0) | 2022.12.13 |
[C#] Oracle Bulk Insert (0) | 2022.04.01 |