[C# 문법] MessagePack 사용 방법 - 직렬화, 역직렬화

참조



소개

  • 안녕하세요. 오늘은 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

이 글을 공유하기

댓글

Designed by JB FACTORY