.NET 5의 새로운 기능
.NET 5는 3.1에 이어 .NET Core의 다음 주요 릴리스입니다. 이 릴리스는 다음 두 가지 이유로 .NET Core 4 대신 .NET 5로 명명되었습니다.
- .NET Framework 4.x와 혼동하지 않도록 버전 번호 4.x를 건너뛰었다.
- "Core"는 앞으로 .NET의 주요 구현임을 강조하기 위해 이름에서 삭제되었습니다. .NET 5는 .NET Core 또는 .NET Framework보다 더 많은 유형의 앱과 더 많은 플랫폼을 지원합니다.
ASP.NET Core 5.0은 .NET 5를 기반으로 하지만 이름이 "Core"인 것을 유지하여 ASP.NET MVC 5와 혼동하지 않도록 합니다. 마찬가지로 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 내장 함수
- 덤프 디버깅에 대한 도구 지원
- 런타임 라이브러리는 널 허용 참조 형식을 위한 80개의% 주석이
- 성능 향상:
- 가비지 수집(GC)
- System.Text.Json
- System.Text.RegularExpressions
- 비동기 ValueTask 풀링
- 컨테이너 크기 최적화
- 더 많은 영역
.NET 5는 .NET Framework를 대체하지 않습니다.
.NET 5 이상 버전은 앞으로 .NET의 기본 구현이지만 .NET Framework 4.x는 여전히 지원됩니다. .NET Framework에서 .NET 5로 다음 기술을 이식할 계획은 없지만 .NET에는 대안이 있습니다.
기술 | 권장되는 대안 |
---|---|
웹 양식 | ASP.NET Core Blazor 또는 Razor Pages |
Windows 워크플로(WF) | 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(Target Framework Moniker)을 지정할 수 있습니다. .NET 5 워크로드 간의 코드 공유가 간소화되었습니다. net5.0
TFM만 있으면 됩니다.
.NET 5 앱 및 라이브러리의 경우 net5.0
TFM은 netcoreapp
및 netstandard
TFM을 결합하고 대체합니다. 그러나 .NET Framework, .NET Core 및 .NET 5 워크로드 간에 코드를 공유하려는 경우 netstandard2.0
TFM으로 지정하면 됩니다. 자세한 내용은 .NET Standard 참조하세요.
C# 업데이트
.NET 5 앱을 작성하는 개발자는 최신 C# 버전 및 기능에 액세스할 수 있습니다. .NET 5는 C# 9와 페어링되어 언어에 많은 새로운 기능을 제공합니다. 다음은 몇 가지 주요 사항입니다.
레코드: 새로운
with
식이 지원하는 값 기반 동일성 의미 체계 및 비파괴적 변형을 가진 참조 형식입니다.관계형 패턴 일치: 논리 패턴을 포함하여 비교 평가 및 식에 대한 관계형 연산자(새 키워드
and
,or
및not
)로 패턴 일치 기능을 확장합니다.최상위 문: C#의 채택 및 학습을 가속화하기 위한 수단으로
Main
메서드를 생략할 수 있으며 다음 예제와 같이 간단한 애플리케이션이 유효합니다.System.Console.Write("Hello world!");
함수 포인터: 중간 언어(IL) 명령어 코드를 노출하는 언어 구문:
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 serialization 확장 메서드
- 따옴표 안에 숫자를 허용하거나 기재하시오.
- 변경할 수 없는 형식 및 C# 9 레코드 지원
- 비공용 속성 접근자 지원
- 지원 필드
- 조건부로 속성 무시
- 비 문자열 키 사전 지원
- 사용자 지정 변환기가 null 처리하도록 허용
- JsonSerializerOptions 복사
- 웹 기본값 사용하여 JsonSerializerOptions 만들기
참고 항목
.NET