.NET 5.0은 마이크로소프트의 통합 플랫폼 전략의 첫 번째 릴리스로, 2020년 11월 10일에 공개되었습니다. LTS(Long Term Support) 버전은 아니지만 Bing.com과 dot.net에서 수개월 간 운영 검증을 완료해 프로덕션 환경 사용이 가능합니다.
주요 개선 사항
- 운영 환경 검증: Bing.com 및 dot.net 서비스에서 장기간 실동작 테스트 완료
- 성능 향상: GC, JIT, 정규식, 비동기 처리, 네트워크, JSON 직렬화 등 전 분야 성능 개선
- C# 9/F# 5 언어 진화: 최상위 문법, 레코드 타입 등 신규 기능 추가
- 플랫폼 지원 확대: Windows Arm64 및 WebAssembly 공식 지원
- 배포 옵션 강화: 싱글 파일 실행, 컨테이너 이미지 축소, ClickOnce 지원
통합 플랫폼 전략
.NET Framework 4.8이 마지막 버전이며, 향후 .NET 5.0이 단일 플랫폼으로 발전합니다. Blazor는 통합 코드베이스(dotnet/런타임)로 구축되는 대표 사례입니다.
C# 9 언어 기능
최상위 문법(Top-level programs):
// 기존 방식
class AppEntry {
static void Main() {
System.Console.WriteLine("Hello");
}
}
// C# 9 신규 방식
System.Console.WriteLine("Hello");
논리 패턴 매칭:
var key = Console.ReadKey();
if (key.KeyChar is 'Y' or 'y')
Console.WriteLine("Yes 선택됨");
레코드 타입:
// 데이터 비교 자동 구현
record Customer(int Id, string Name);
var cust1 = new Customer(1, "Kim");
var cust2 = new Customer(1, "Kim");
Console.WriteLine(cust1 == cust2); // true 출력
런타임 개선
- GC 성능 향상: Pinned Object Heap(POH) 도입으로 고정 객체 관리 최적화
- Arm64 지원: Windows/Linux Arm64 플랫폼 공식 지원
- 지연 시간 감소: P95 레이턴시 40ms → 30ms로 개선
- 계층적 컴파일: 메서드 호출 카운팅 방식 개선 및 스택 교체(OSR) 실험적 지원
배포 방식 강화
컨테이너:
# 멀티스테이지 빌드로 이미지 크기 축소
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
...
FROM mcr.microsoft.com/dotnet/aspnet:5.0
싱글 파일 배포:
# 프레임워크 종속형 싱글 파일 생성
dotnet publish -r linux-x64 --self-contained false -p:PublishSingleFile=true
ClickOnce: 윈도우 애플리케이션 배포 지원 재도입
도구 체인 개선
- Windows Forms 디자이너: 전체 컨트롤 지원 및 이벤트 처리 강화
- Target Framework Moniker(TFM) 통합: net5.0으로 표준화
- WinRT 상호운용: CsWinRT 도구로 네이티브 API 통신 방식 개편