■ 프로토콜 버퍼를 사용해 데이터를 직렬화/역직렬화하는 방법을 보여준다.
▶ Message.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using ProtoBuf; namespace TestProject; /// <summary> /// 메시지 /// </summary> [ProtoContract] public class Message { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region 메시지 ID - MessageID /// <summary> /// 메시지 ID /// </summary> [ProtoMember(1)] public string MessageID { get; set; } #endregion #region 우선 순위 - Priority /// <summary> /// 우선 순위 /// </summary> [ProtoMember(2)] public int Priority { get; set; } #endregion #region 텍스트 - Text /// <summary> /// 텍스트 /// </summary> [ProtoMember(3)] public string Text { get; set; } #endregion } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
using ProtoBuf; namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { Message sourceMessage = new Message { MessageID = "A49EC1E0-5F84-4DBA-9DF3-A8605407770F", Priority = 100, Text = "텍스트 문자열 입니다." }; Console.WriteLine("소스 메시지"); Console.WriteLine($"{sourceMessage.MessageID}, {sourceMessage.Priority}, {sourceMessage.Text}"); Console.WriteLine(); MemoryStream serializingStream = new MemoryStream(); Serializer.Serialize<Message>(serializingStream, sourceMessage); byte[] serializedByteArray = serializingStream.ToArray(); Console.WriteLine("직렬화 바이트 배열"); Console.WriteLine($"{BitConverter.ToString(serializedByteArray)}"); Console.WriteLine(); MemoryStream deserializingStream = new MemoryStream(serializedByteArray); Message deserializedMessage = Serializer.Deserialize<Message>(deserializingStream); Console.WriteLine("역직렬화 메시지"); Console.WriteLine($"{deserializedMessage.MessageID}, {deserializedMessage.Priority}, {deserializedMessage.Text}"); Console.WriteLine(); Console.WriteLine("프로그램을 종료하기 위해서 아무 키나 눌러 주시기 바랍니다."); Console.ReadKey(false); } #endregion } |