[C# 문법] MessagePack 사용 방법 - 직렬화, 역직렬화
- C#/C# 문법
- 2021. 12. 15. 20:50
참조
소개
- 안녕하세요. 오늘은 C#에서 직렬화, 역직렬화 작업을 매우 빠른 속도로 제공해 주는 무료 라이브러리가 있어서 해당 라이브러리에 대해서 간단 사용방법에 대해서 알려 드리려고 합니다.
- 바로, MessagePack 라이브러리 입니다.
- GitHub에 자세한 내용이 있고, 참조에 URL 적어 놓았습니다.
MessagePack이란?
- MessagePack 라이브러리는 매우 빠른 C#용 직렬 변환기 입니다.
- MsgPack-Cli보다 10배가 빠르며 다른 C# 직렬 변환기보다 성능이 매우 뛰어납니다.
- C# 전용 MessagePack은 압축 알고리즘인 LZ4 압축을 기본적으로 지원합니다.
- 성능은 특히 게임, 분산, 컴퓨팅, 마이크로서비스 또는 데이터 캐시와 같은 애플리케이션에서 중요하게 사용합니다.
MessagePack 설치 방법
- MessagePack은 .NET Core 2.1 이상에 대해 최적화가 되어있고, .NET Framework 4.6.1 이상부터 사용 가능합니다.
NuGet 패키지
- NuGet을 사용하여 설치하려면
MessagePack
패키지를 설치하기만 하면 됩니다.
install package MessagePack
예제 코드
- 그럼 실제로 예제 코드를 작성하여 MessagePack 직렬화, 역질렬화 기능을 사용해 보겠습니다.
- MessagePack 을 이용하여 직렬화 할 구조체 또는 클래스를 정의할때 [MessagePackObject] Attribute를 사용합니다.
- 또한, [Key] Attribute 사용하여 값을 직렬화애햐 하는 멤버(필드 및 속성) 에도 선언합니다.
- 위의 문법을 기반으로 MessagePack 예제코드를 작성해 보도록 하겠습니다.
using MessagePack;
using System;
namespace BenchMarkTest
{
class Program
{
static void Main(string[] args)
{
Student student = new Student()
{
Name = "범범조조",
Age = 29,
Score = 77,
Grade = "C+"
};
byte[] bytes = MessagePackSerializer.Serialize(student);
Student student2 = MessagePackSerializer.Deserialize<Student>(bytes);
Console.WriteLine($"{student2.Name} , {student2.Age}, {student2.Score}, {student2.Grade}");
Console.WriteLine();
// JSON 변경
var json = MessagePackSerializer.ConvertToJson(bytes);
Console.WriteLine(json);
}
}
[MessagePackObject]
public class Student
{
[Key(0)]
public string Name { get; set; }
[Key(1)]
public int Age { get; set; }
[Key(2)]
public int Score { get; set; }
[Key(3)]
public string Grade { get; set; }
}
}
실행 결과
범범조조 , 29, 77, C+
["범범조조",29,77,"C+"]
- 위와 같이 JSON 형태로 출력도 할 수 있습니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] XML, JSON, MessagePack 직렬화, 역직렬화 성능 측정(벤치마크) (0) | 2021.12.16 |
---|---|
[C# 문법] MessagePack ObservableCollection 직렬화, 역직렬화 (0) | 2021.12.16 |
[C# 벤치마크] C# Json Serialize, DeSerialize 벤치마크 측정 (0) | 2021.12.15 |
[C# 벤치마크] C# XML Serialize, DeSerialize 벤치마크 성능 측정 (0) | 2021.12.15 |
[C# 벤치마크] BenchMarkDotNet IntroBasic (0) | 2021.12.14 |
이 글을 공유하기