[c#] C# 직렬화와 웹 애플리케이션

C#은 객체의 상태를 저장하고 나중에 다시 복원할 수 있는 직렬화 기능을 제공합니다. 직렬화는 객체를 데이터 스트림으로 변환하는 과정이며, 이를 통해 네트워크에서 데이터를 주고 받거나 데이터를 파일에 저장하는 등의 작업을 수행할 수 있습니다. 이번 포스트에서는 C# 직렬화를 활용하여 웹 애플리케이션에서 데이터를 다루는 방법에 대해 살펴보겠습니다.

C# 직렬화

C#에서 직렬화를 수행하는 방법은 다양한데, BinaryFormatterXmlSerializer 등의 클래스를 사용하여 객체를 직렬화할 수 있습니다. 아래의 예제는 BinaryFormatter를 사용하여 객체를 직렬화하고 복원하는 간단한 코드입니다.

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MyClass
{
    public int MyProperty { get; set; }
    public string MyField;
}

public class Program
{
    static void Main()
    {
        MyClass myObject = new MyClass { MyProperty = 42, MyField = "Hello, World!" };

        // 객체를 파일에 직렬화
        BinaryFormatter formatter = new BinaryFormatter();
        using (Stream stream = new FileStream("data.bin", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            formatter.Serialize(stream, myObject);
        }

        // 파일에서 객체를 복원
        using (Stream stream = new FileStream("data.bin", FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            MyClass restoredObject = (MyClass)formatter.Deserialize(stream);
            Console.WriteLine(restoredObject.MyProperty);  // 42
            Console.WriteLine(restoredObject.MyField);  // "Hello, World!"
        }
    }
}

웹 애플리케이션과의 활용

웹 애플리케이션에서는 직렬화를 통해 데이터를 클라이언트와 서버 간에 주고 받을 수 있습니다. 예를 들어, 웹 요청을 처리하는 도중에 객체를 직렬화하여 JSON이나 XML 형태로 변환한 후 클라이언트에게 응답으로 전송할 수 있습니다. 클라이언트에서 받은 데이터는 다시 역직렬화하여 객체로 복원하여 사용할 수 있습니다.

웹 애플리케이션에서 Newtonsoft.Json 라이브러리를 사용하여 JSON 형식으로 직렬화하는 방법은 아래와 같습니다.

using Newtonsoft.Json;

public class MyData
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class MyController : Controller
{
    public IActionResult GetMyData()
    {
        MyData data = new MyData { Name = "John", Age = 30 };
        string jsonString = JsonConvert.SerializeObject(data);
        return Ok(jsonString);
    }

    public IActionResult UpdateMyData([FromBody] string jsonPayload)
    {
        MyData restoredData = JsonConvert.DeserializeObject<MyData>(jsonPayload);
        // 복원된 객체 활용
        return Ok();
    }
}

이와 같이 C# 직렬화는 웹 애플리케이션에서 데이터를 다루는 데 유용하게 활용될 수 있습니다.

마치며

C#의 직렬화 기능은 객체를 데이터로 변환하는 과정을 간소화하여 다양한 환경에서 활용할 수 있게 해줍니다. 특히 웹 애플리케이션에서는 데이터를 주고 받을 때 직렬화를 통해 효율적으로 처리할 수 있으며, 이를 통해 다양한 기능을 구현할 수 있습니다.

위에서 살펴본 예제를 통해 C#의 직렬화와 웹 애플리케이션에서의 활용에 대해 좀 더 알아보았습니다.

참고문헌: