프로그래밍/C#

[C#] MessagePack-CSharp을 이용한 고성능 객체 직렬화 및 역직렬화

흔한티벳여우 2023. 4. 14. 13:52
반응형

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과 비교하여 더 작은 크기와 더 빠른 처리 속도를 제공합니다. 그러나 이진 형식으로 인해 가독성이 떨어질 수 있으며, 특정 경우에만 적합한 솔루션입니다.

반응형