새로운 Text.Json APIs 공부하는 것2019. 6. 16. 18:42
며칠전에 VS 2019의 새로운 뉴스 채널에 올라온 기사가 있었다.
새로운 "Try the new System.Text.Json APIs" 라는 제목의 뉴스였는데, 링크를 따라서 들어가면, System.Text.Json APIs라는 블로그의 제목을 마주하게 된다.
이전에도 "이상하다"라고 생각하기도 하였는데,
왜? .Net에서는 공식적인 라이브러리와 API로 "JSON"을 지원하지 않는가? 라는 질문을 최근까지 해왔었다.
왜냐하면, Web과 Mobile에서 기본적인 API 통신 프로토콜로는 JSON은 이전의 XML의 위상을 이미 넘어섰기도 하였지만, HttpClient와 같은 라이브러리는 다른 서버로 부터 Data를 받아서 처리하기 위해서 또 다른 라이브러리를 찾아서 설치하여야 하는 불편함이 있었기 때문이다.
물론 JSON.Net 이라는 걸출한 라이브러자가 있기 때문일수 있지만, 이는 MS도 Open 소스화된 표준화된 라이브러리도 아니기 때문에, 매번 Newtonsoft에서 만든 이 라이브러리를 이용할 때마다 드는 생각은 "도대체 무슨 이유 때문일까?" 라는 질문이었다.
"Newtonsoft"에서 개발되어서 사용했던 JSon.Net 라이브러리는 이전기 XML 기반으로 Serialize와 Desirialize를 처리해 주던 기능에서 JSON으로 영역을 확대하였다.
Object와 Array를 잘 처리해 주기도 하였지만, 빠른 속도와 JSON Path 지원과 같은 많은 기는을 제공하는 것이 정점이었고, LINQ에 대한 지원 또한 잘 해 주었다.
그런데, 늦었지만 이제라도 .Net Core 3.0에 포함된다고 하니, 다운로드 하는 번거러움은 한가지 줄어들것 같지만, 아직은 .Net Core 3.0 Preview6이기 때문에 공식적인 사용은 조금만 더 기다려야 할 것 같다.
새로운 System.Text.Json은 성능적인 면에서 JSON.net과 유사하면, 여지것 잘 사용하여 왔더 "JSon.Net"과의 Dependency를 줄여주는 방향으로 개발이 되고 있다.
위 링크에 있는 Blog를 보면, 어떻게 사용하는지에 대한 동영상 가이드와 셈플 코드가 있다
가장 기본적인 사용법은 아래와 같이 선언을 하고 Serialization을 사용하면 된다.
using System.Text.Json;
using System.Text.Json.Serialization;
이외의 몇가지 사용예들이 있는데, 아직 정식버전은 아니지만, 거의 바뀌지는 않을 것이다. 참고만 하면 될듯...
성능에 대해서도 JSon.Net과도 별 차이가 없다. (아래 참고)
JSON deserialization (input)
Description | RPS | CPU(%) | Memory(MB) |
Newtonsoft.Json – 500 B | 136,435 | 95 | 172 |
System.Text.Json – 500 B | 167,861 | 94 | 169 |
Newtonsoft.Json – 2.4 KB | 97,137 | 97 | 174 |
System.Text.Json – 2.4 KB | 132,026 | 96 | 169 |
Newtonsoft.Json – 40 KB | 7,712 | 88 | 212 |
System.Text.Json – 40 KB | 16,625 | 96 | 193 |
JSON serialization (output)
Description | RPS | CPU(%) | Memory(MB) |
Newtonsoft.Json – 500 B | 120,273 | 94 | 174 |
System.Text.Json – 500 B | 145,631 | 94 | 173 |
Newtonsoft.Json – 8 KB | 35,408 | 98 | 187 |
System.Text.Json – 8 KB | 56,424 | 97 | 184 |
Newtonsoft.Json – 40 KB | 8,416 | 99 | 202 |
System.Text.Json – 40 KB | 14,848 | 98 | 197 |
새로운 "Text.Json"에 대한 API 문서는 다음을 보면된다.
https://docs.microsoft.com/ko-kr/dotnet/api/system.text.json?view=netcore-3.0
'공부하는 것' 카테고리의 다른 글
.NET Core 3.1 발표를 보면서... (3) | 2019.12.09 |
---|---|
"유지보수 가능한 코딩의 기술 C#편"을 읽고서... (0) | 2019.12.08 |
요즘 내가 공부하는 것 (1) | 2019.06.07 |
Visual Studio Code 1.0 정식 Released (2) | 2016.04.16 |
알고리듬 성능비교 - Selection Sort (0) | 2016.02.27 |