.NET 5 발표에 따른 변화들

20년 11월 마이크로소프트는 .NET 5을 발표했다. 아래 그림과 같은 Platform으로 구성되었으며, 통합을 위한 시작으로 보인다.

img
통합 플랫폼

Tool은 오른쪽과 같이 4개를 사용하며 Core와 .NET Framework가 통합된 것이 특징이다. Core가 사라지고 .NET 5로 명칭을 정리했다. 이름을 통합하면서 혼동될 수 있는 내용에 대해 알아보자.

  1. .NET 5는 .Net Framework와 .Net Standard를 대체하지 않는다.
  2. .NET Core 5.0은 ASP.NET MVC 5와 혼동하지 않도록 Core 단어를 계속 유지한다. Entity Framework Core 5.0도 Entity Framework 5와 혼동하지 않도록 Core를 유지한다.

기존 버전의 프레임워크는 유지하면서 신규 프레임워크로 대체하기 위한 방안들을 제시한다. 가능하면 .Net Framework에서 .NET 5로 마이그레이션 및 신규 프로젝트 채택을 하는 것이 좋다. .NET Core가 등장했을 때도 제시했지만 업데이트 방향성을 볼 때 .NET Core를 선택하는 것이 좋다고 생각된다.

마소에서는 다음과 같은 경우에만 .NET Framework를 사용하라고 권장하고 있다.

  1. 앱이 현재 .NET Framework를 사용한다. → 마이그레이션 하기 힘들고, 확장을 해라.
  2. .NET 5에서 사용할 수 없는 타사 .NET 라이브러리 등을 사용 → 대체 라이브러리가 없다면 기존 앱을 사용하자. 현재 필자는 WebForm을 사용하기 때문에 대체하진 못한다. 새로 만들어야 한다.
  3. .NET 5에서 지원하지 않는 .NET 기술을 사용할 때 → 이 경우는 어쩔 수 없다. 모든 기능을 지원하진 않기 때문이다.
  4. .NET 5를 지원하지 않는 플랫폼을 사용할 때 → 그럴때는 .NET Framework를 사용합니다.

이 외에는 넘어가는 것을 추천한다. .NET Framework도 4.8 버전 업을 마지막으로 버전 출시가 없지만 .NET 5만큼 지원이 좋지는 않다. 로드 맵을 보면 이미 23년까지 꾸준하게 발전시킬 계획을 가지고 있다.

.NET 5는 지원하지 않는 또는 대체 대안을 사용자에게 제시했다.

  1. WCF를 CoreWCF로 지원. 단 서버 구성 요소는 지원하지 않습니다. 가능하면 GRPC를 대안으로 사용하세요.
  2. .NET Standard를 지원하지 않습니다. 단, TFM을 통해 API 접근은 가능합니다.

지원하는 기능

  • 모든 장치에서 교차 플랫폼 구현을 지원하는 데 도움이 됩니다.
  • 오픈 소스이며 커뮤니티 지향적입니다.
  • .Net Core, Xamarin 및 .Net 프레임워크와 같은 기능을 지원합니다.
  • 병렬 설치를 용이하게 합니다.
  • Windows에서 WPF 및 Windows Forms와 같은 플랫폼 기능을 지원합니다.
  • 보다 스마트한 패키지 및 배포를 제공합니다.

Whats new in .NET 5
.NET 5가 지원하는 것

C# 업데이트

C#은 버전 9로 올라간다. 자세한 C# 내용은 따로 정리할 것이다.

중요 사항만 정리하면 다음과 같다.

  1. Record형 추가. Record 유형을 통해 읽기 전용 참조 유형을 쉽게 만들 수 있다.
  2. 초기화를 위한 setter 지원
  3. 최상위 Main 코드 삭제. 간단한 프로그램 작성 시 유용합니다.
  4. and, or, not 패턴 매칭 추가

System.Text.Json 기능 업데이트

  1. reference 보존(preserve)과 handle circular reference 처리 기능 추가
  2. HttpClient와 HttpContent에 확장 메서드 추가
    1. GetFromJsonAsync<T>
    2. PostAsJsonAsync
  3. C# 9 버전에 추가된 Record와 Immutable 타입 지원
  4. 비공개 접근자(non-public) 접근 지원
  5. 필요 없는 속성 제외
  6. Dictionary의 키가 string이 아닌 제네릭 형식 지원
  7. JsonSerializerOption 복사 기능 추가

위와 같은 업데이트를 진행했다. 또한 GC(Garbage Collection), System.Text.Json, System.Text.RegularExpressions, Container size optimization 등 다양한 부분에서 성능 개선을 진행했다. 각각의 성능 개선과 성과는 개별 링크를 통해 확인할 수 있다.

Benchmark dotnet을 통해 쉽게 성능 체크를 할 수 있으며, Benchmark dotnet은 아래 주소를 참고하자.

https://github.com/dotnet/Benchmark

함께보면 좋은 글

코루틴(Coroutine) – [C# 시리즈 1]

Leave a Comment