.NET 10 Preview의 새로운 기능: 개발자가 놓치지 말아야 할 주요 기능 | Vijayakumar


요약

1. SHA-256/3 Thumbprint 인증서 검색

이전에는 인증서 thumbprint 검색 시 SHA-1만 지원되어 보안이 취약했습니다. .NET 10에서는 SHA-256 및 SHA-3-256 thumbprint 검색 기능이 추가되어, 보다 현대적인 보안 인증서를 안전하게 찾을 수 있습니다. 예시로, X509Certificate2Collection.FindByThumbprint(HashAlgorithmName.SHA256, thumbprint) 형태로 사용할 수 있습니다.

2. PEM 인코딩 데이터 개선

PEM 인증서/키 파일은 ASCII/UTF-8로 저장되나, 기존에는 바이트를 문자열로 변환해야만 사용할 수 있었습니다. .NET 10은 PemEncoding.FindUtf8() 메서드를 통해 바이트 배열에서 직접 PEM 데이터를 추출할 수 있어 효율성이 향상됩니다.

3. 인증서 내보내기 알고리즘 지정

기존에는 .pfx로 내보낼 때 3DES 등 구식 알고리즘이 주로 사용됐습니다. 이제 .NET 10에서 ExportPkcs12 메서드를 통해 AES-256, SHA-256, SHA-512 등 원하는 암/해시 알고리즘을 직접 지정해 내보낼 수 있어 보안성이 크게 향상되었습니다.

4. ISOWeek의 DateOnly 지원

ISOWeek 유틸리티가 DateTime 뿐만 아니라 DateOnly 타입도 지원하게 되었습니다. 이제 ISO 주 기반 연산에서 날짜 전용 타입으로 더욱 직관적인 연산이 가능하며, 예시로 ISOWeek.ToDateOnly() 메서드를 사용할 수 있습니다.

5. TimeSpan.FromMilliseconds 오버로드 추가

TimeSpan.FromMilliseconds의 기존 오버로드는 두 번째 매개변수가 선택적이어서 LINQ 등에서 에러가 발생했습니다. .NET 10에서는 milliseconds만 받는 간단한 오버로드가 추가되어 코드 작성과 컴파일이 더욱 쉬워졌습니다.

6. Span 기반 문자열 정규화 추가

문자열 정규화 작업에서 Span나 ReadOnlySpan에 직접 API를 쓸 수 있게 되어, 중간 문자열 생성 없이 효율적으로 정규화/검사/복사가 가능합니다. StringNormalizationExtensions 클래스를 활용하면 됩니다.

7. 숫자 문자열 비교 지원

문자열 비교 시 CompareOptions.NumericOrdering 옵션으로 숫자형 문자열을 실제 숫자 순서대로 비교/정렬할 수 있습니다. 2 < 10, "02""2"를 같게 판단하는 등 인간 친화적 정렬이 가능합니다.

8. ZipArchive 성능 및 메모리 개선

ZipArchive를 사용할 때 모든 항목을 메모리에 로드하지 않도록 개선, 대용량 ZIP 파일 작업 시 메모리 사용량과 처리속도가 크게 향상되었습니다. 압축 해제시 병렬화 지원도 강화되었습니다.

9. OrderedDictionary<TKey, TValue> 인덱스 반환

TryAdd, TryGetValue 오버로드가 인덱스도 반환하게 되어 중복키 처리, 요소 접근/수정이 직관적으로 개선되었습니다. 컬렉션 요소의 위치를 더 쉽게 알 수 있습니다.

10. Json 소스 생성기의 순환 참조 처리

System.Text.Json의 소스 생성기가 ReferenceHandler 옵션을 지원하게 되어, 순환 참조 객체 직렬화에서도 예외 없이 참조 정보를 포함하여 처리할 수 있습니다.

11. 좌표계 행렬 변환 API 추가

DirectX 등에서 사용하는 좌수 시스템용 CreateBillboardLeftHanded, CreateConstrainedBillboardLeftHanded 메서드가 Matrix4x4에 추가돼 3D 그래픽 작업이 용이해졌습니다.

12. 프레임워크 패키지 자동 정리(Pruning)

불필요한 NuGet 프레임워크 패키지는 자동으로 restore 대상에서 제외되어, 복원 속도 개선 및 보안 진단 오탐률이 줄어듭니다. 프로젝트에서 으로 비활성화할 수도 있습니다.

13. 동사-명사(dotnet) CLI 명령어

dotnet의 주요 CLI 명령어가 “동사-명사(add package)”에서 “명사-동사(package add)” 방식으로 추가되어, 더욱 일관된 CLI 사용성과 스크립트 작성이 가능합니다.

14. CLI 커맨드 인터랙티브 모드 기본 활성화

CLI명령에 –interactive 플래그를 별도로 쓰지 않아도 대화형 터미널이면 자동으로 인증 프롬프트가 뜨도록 변경, 편의성이 대폭 향상됐습니다.

15. 콘솔 앱 컨테이너 이미지 빌드 지원

.NET 10에서는 별도의 설정 없이 dotnet publish /t:PublishContainer만으로 콘솔 앱도 컨테이너 이미지로 빌드할 수 있습니다. Publish 단계가 일관되어 개발 편의성이 높아졌습니다.

16. 컨테이너 이미지 포맷 명시적 지정

프로젝트 파일의 (Docker/OCI) 지정으로 생성되는 컨테이너 이미지 포맷을 명확하게 관리할 수 있습니다. OCI 표준 포맷 등 특정 요구에 쉽게 대응 가능합니다.

17. Microsoft.Testing.Platform 공식 지원

dotnet test 명령어에서 최신 Microsoft.Testing.Platform 테스트 러너를 공식 지원, 설정 파일에서 간단히 선택 가능합니다. 테스트 자동화와 CI/CD 연계가 쉬워집니다.

18. 배열/열거 성능 최적화

배열을 foreach로 순회할 때 JIT이 가상 메서드 호출, 힙 할당 오버헤드를 줄여, for문만큼 빠르게 실행됩니다. 작은 배열은 스택에 할당돼 GC부담도 감소합니다.

19. NativeAOT 형변환/부호연산 pre-init 지원

Conv.*, Neg 등 IL명령을 NativeAOT pre-initializer에서 미리 처리할 수 있게 되어, 네이티브 코드 결과로 빠른 시작과 적은 런타임 리소스 사용이 가능합니다.

2개의 좋아요