.NET 5의 새로운 기능
.NET 5는 3.1에 이어 .NET Core의 다음 주요 릴리스입니다. 다음 두 가지 이유로 이 새 릴리스를 .NET Core 4 대신 .NET 5로 명명했습니다.
- .NET Framework 4.x와의 혼동을 피하기 위해 버전 번호 4.x를 건너뛰었습니다.
- 이것이 앞으로 .NET의 주요 구현임을 강조하기 위해 이름에서 "Core"를 삭제했습니다. .NET 5는 .NET Core 또는 .NET Framework보다 더 많은 형식의 앱과 더 많은 플랫폼을 지원합니다.
ASP.NET Core 5.0은 .NET 5를 기반으로 하지만 ASP.NET MVC 5와 혼동을 피하기 위해 "Core"라는 이름을 보존합니다. 마찬가지로 Entity Framework Core 5.0은 Entity Framework 5 및 6과 혼동을 피하기 위해 "Core"라는 이름을 보존합니다.
.NET 5에는 .NET Core 3.1에 비해 다음과 같은 개선 사항과 새로운 기능이 포함되어 있습니다.
- C++ 업데이트
- F# 업데이트
- Visual Basic 업데이트
- System.Text.Json의 새로운 기능
- 단일 파일 앱
- 앱 자르기
- Windows Arm64 및 Arm64 내장 기능
- 덤프 디버깅을 위한 도구 지원
- 런타임 라이브러리에는 null 허용 참조 형식에 대한 주석이 80% 추가되어 있습니다.
- 성능 향상:
.NET 5는 .NET Framework를 바꾸지 않습니다.
.NET 5 이상 버전은 앞으로 .NET의 주요 구현이지만 .NET Framework 4.x는 계속 지원됩니다. .NET Framework에서 .NET 5로 다음 기술을 이식할 계획은 없지만 .NET에는 대안이 있습니다.
기술 | 권장되는 대체 항목 |
---|---|
Web Forms | ASP.NET Core Blazor 또는 Razor Pages |
WF(Windows 워크플로) | Elsa-Workflows |
Windows Communication Foundation
WCF(Windows Communication Foundation)의 원래 구현은 Windows에서만 지원되었습니다. 그러나 .NET Foundation에서 사용할 수 있는 클라이언트 포트가 있습니다. 완전히 오픈 소스이며 플랫폼에 구애받지 않고 Microsoft에서 지원됩니다. 핵심 NuGet 패키지는 다음과 같습니다.
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
앞서 언급한 클라이언트 라이브러리를 보완하는 서버 구성 요소는 CoreWCF를 통해 사용할 수 있습니다. 2022년 4월부터 CoreWCF는 Microsoft에서 공식적으로 지원됩니다. 그러나 WCF의 대안으로 gRPC를 고려해보세요.
.NET 5는 .NET Standard를 바꾸지 않습니다.
새로운 애플리케이션 개발에서는 클래스 라이브러리를 포함한 모든 프로젝트 형식에 대해 net5.0
TFM(대상 프레임워크 모니커)을 지정할 수 있습니다. .NET 5 워크로드 간 코드 공유가 간소화되었습니다. 필요한 것은 net5.0
TFM뿐입니다.
.NET 5 앱 및 라이브러리의 경우 net5.0
TFM은 netcoreapp
및 netstandard
TFM을 결합하고 바꿉니다. 그러나 .NET Framework, .NET Core 및 .NET 5 워크로드 간에 코드를 공유하려는 경우 netstandard2.0
을 TFM으로 지정하면 됩니다. 자세한 내용은 .NET 표준을 참조하세요.
C# 업데이트
.NET 5 앱을 작성하는 개발자는 최신 C# 버전 및 기능에 액세스할 수 있습니다. .NET 5는 C# 9와 결합되어 언어에 많은 새로운 기능을 제공합니다. 다음은 몇 가지 주요 내용입니다.
레코드: 새로운
with
식에서 지원되는 값 기반 동등 의미 체계 및 비파괴적 변형이 포함된 참조 형식입니다.관계형 패턴 일치: 비교 평가 및 논리 패턴(새 키워드
and
,or
및not
)을 포함한 식을 위해 패턴 일치 기능을 관계형 연산자로 확장합니다.최상위 문: C# 채택 및 학습을 가속화하기 위한 방법으로
Main
메서드를 생략할 수 있으며 다음 예와 같이 간단한 애플리케이션이 유효합니다.System.Console.Write("Hello world!");
함수 포인터: IL(중간 언어) opcode(
ldftn
및calli
)를 노출하는 언어 구문입니다.
사용 가능한 C# 9 기능에 대한 자세한 내용은 C# 9의 새로운 기능을 참조하세요.
소스 생성기
강조 표시된 새로운 C# 기능 중 일부 외에도 원본 생성기가 개발자 프로젝트에 진출하고 있습니다. 원본 생성기를 사용하면 컴파일 중에 실행되는 코드가 프로그램을 검사하고 나머지 코드와 함께 컴파일되는 추가 파일을 생성할 수 있습니다.
원본 생성기에 대한 자세한 내용은 C# 원본 생성기 소개 및 C# 원본 생성기 샘플을 참조하세요.
F# 업데이트
F#은 .NET 기능형 프로그래밍 언어이며, .NET 5를 사용하면 개발자는 F# 5에 액세스할 수 있습니다. 새로운 기능 중 하나는 보간된 문자열이며, 이는 C# 및 JavaScript의 보간된 문자열과 유사합니다.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
기본 문자열 보간 외에도 형식화된 보간이 있습니다. 형식화된 보간을 사용하면 지정된 형식이 형식 지정자와 일치해야 합니다.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
이 형식은 형식이 안전한 입력을 기반으로 문자열 형식을 지정하는 sprintf
함수와 유사합니다.
자세한 내용은 F# 5의 새로운 기능을 참조하세요.
Visual Basic 업데이트
.NET 5에는 Visual Basic에 대한 새로운 언어 기능이 없습니다. 그러나 .NET 5에서는 Visual Basic 지원이 다음으로 확장되었습니다.
설명 | dotnet new 매개 변수 |
---|---|
콘솔 애플리케이션 | console |
클래스 라이브러리 | classlib |
WPF 애플리케이션 | wpf |
WPF 클래스 라이브러리 | wpflib |
WPF 사용자 지정 컨트롤 라이브러리 | wpfcustomcontrollib |
WPF 사용자 컨트롤 라이브러리 | wpfusercontrollib |
Windows Forms(WinForms) 애플리케이션 | winforms |
Windows Forms(WinForms) 클래스 라이브러리 | winformslib |
단위 테스트 프로젝트 | mstest |
NUnit 3 테스트 프로젝트 | nunit |
NUnit 3 테스트 항목 | nunit-test |
xUnit 테스트 프로젝트 | xunit |
.NET CLI의 프로젝트 템플릿에 대한 자세한 내용은 dotnet new
를 참조하세요.
System.Text.Json의 새로운 기능
System.Text.Json에는 다음과 같은 새로운 기능이 있습니다.
- 참조를 보존하고 순환 참조를 처리
- HttpClient 및 Httpclient 확장 메서드
- 따옴표 안에 숫자 허용 또는 쓰기
- 변경이 불가능한 형식 및 C# 9 레코드 지원
- public이 아닌 속성 접근자 지원
- 지원 분야
- 조건부 속성 무시
- 문자열 키가 아닌 사전 지원
- 사용자 지정 변환기가 null을 처리하도록 허용
- JsonSerializerOptions 복사
- 웹 기본값으로 JsonSerializerOptions 만들기
참고 항목
.NET