[C#] MessagePack 사용 방법
2020. 7. 13. 22:49
728x90
반응형
MessagePack 이란?
MessagePack은 C#용 시리얼 라이저의 일종입니다. MsgPack-Cli 보다 10배 빠르다고 공식 GitHub에 명시되어 있으며, 다른 C# 직렬 변환기보다 성능이 뛰어납니다.
MessagePack for C#은 또한 매우 빠른 압축 알고리즘 인 LZ4 압축을 기본적으로 지원합니다.
특히 게임, 분산 컴퓨팅, 마이크로 서비스 또는 데이터 캐시와 같은 응용 프로그램에서 성능이 중요합니다.
공식 GitHub
https://github.com/neuecc/MessagePack-CSharp
Nuget Package를 이용한 MessagePack 설치
Nuget 패키지를 이용해서 설치를 합니다. MessagePack을 검색하여 나오는 상단의 패키지를 설치 합니다.
해당 패키지의 경우 ZeroFormatter에 비해 많은 종속성이 걸려 있습니다.
MessagePack 하나만 설치 했는데도, 아래와 같이 다양한 종속성을 가지고 있네요.
만약, 다른 패키지와 혼용해서 사용하신다면, 아래의 종속성 때문에 오류를 발생하는 경우도 한번 겪었습니다.
Sample
전반적으로 ZeroFormatter 와 사용방법에는 큰 차이가 없습니다만,
ZeroFormatter의 경우 Index Attribute를 이용했지만, MessagePack의 경우는 Key Attribute를 이용하는 차이가 있습니다.
using MessagePack;
namespace MPackTest.Models
{
[MessagePackObject]
public class GameEvent
{
[Key(0)]
public virtual int Index { get; set; }
[Key(1)]
public virtual int Season { get; set; }
[Key(2)]
public virtual int Score { get; set; }
}
}
using MessagePack;
using System;
using System.Collections.Generic;
namespace MPackTest
{
class Program
{
static void Main(string[] args)
{
var gameEvent = new List<Models.GameEvent>();
for (int i = 0; i < 1000; i++)
{
gameEvent.Add(new Models.GameEvent { Index = i, Score = i, Season = i });
}
var serialize = MessagePackSerializer.Serialize<List<Models.GameEvent>>(gameEvent);
Console.WriteLine($"Serialize 크기 : {serialize.Length}");
var deserialize = MessagePackSerializer.Deserialize<List<Models.GameEvent>>(serialize);
Console.WriteLine($"DeSerialize 50번 인덱스 : {deserialize[50].Index}");
Console.ReadLine();
}
}
}
728x90
'Program Language > C#' 카테고리의 다른 글
[C#] Winform에서 Invoke 메서드 사용 (0) | 2021.04.19 |
---|---|
[C#]비동기 호출 시 Task.Run() 사용하기 (0) | 2021.03.16 |
[C#] Zeroformatter 사용 방법 (0) | 2020.07.08 |
[C#] HttpWebRequest, WebClient, HttpClient 사용 방식에 대한 정리 (1) | 2020.06.30 |
[C#] 한글 2byte 로 계산 하는 방법 (0) | 2020.06.20 |