.NET 8의 새로운 주요 기능 및 변경 사항

CChatGPT8
8 Min Read


.NET의 릴리스 주기를 예측할 수 있다는 것은 좋은 일입니다. .NET Framework의 옛날에는 릴리스가 거의 없었고 변경 사항도 거의 없었습니다. 특별히 나쁘지는 않았지만 개발 플랫폼이 Windows 릴리스 주기에 묶여 있다는 것은 때로는 약속된 기능을 얻기 위해 몇 년을 기다려야 한다는 것을 의미했습니다.

오픈 소스 플랫폼으로 전환하면서 처음에는 .NET Core 및 .NET Standard 기본 클래스의 병렬 개발을 거쳐 마지막으로 병합된 .NET을 사용하면서 상황이 바뀌었습니다. 이제 STS(표준 기간 지원) 릴리스에 대한 18개월 지원과 LTS(장기 지원) 릴리스에 대한 3년 지원이 포함된 11월의 .NET Conf 이벤트와 연계하여 연간 .NET 릴리스를 받게 됩니다. .NET의 홀수 버전은 STS이고 짝수 버전은 LTS입니다.

다음 .NET LTS 릴리스

2023년 11월로 예정된 다음 .NET 릴리스는 .NET 8입니다. LTS 릴리스인 .NET 8은 적어도 향후 2년 동안 많은 조직의 .NET 기본 버전이 될 것입니다. .NET 7은 많은 변경 사항을 가져왔으며, 이 새 릴리스는 이러한 변경 사항을 토대로 구축되었으며 더 많은 새로운 기능을 추가했습니다. 현재 미리 보기 릴리스를 사용하여 기존 코드가 새 버전으로 포팅되는 방법을 확인하고 변경해야 할 사항을 결정하는 데 시간을 할애할 가치가 있습니다.

.NET 플랫폼이 계속해서 발전함에 따라 Microsoft는 새로운 언어 기능과 기능을 지원하기 위해 기본 컴파일러에 많은 변경을 가하고 있으며 주로 C#의 새 릴리스에 등장합니다.

.NET 가비지 수집기 개선 사항

하나의 새로운 API는 적어도 Kubernetes와 같은 플랫폼에서 실행되는 클라우드 네이티브 애플리케이션을 위한 .NET 코드를 구축하는 경우 특히 흥미롭습니다. 이제 .NET 가비지 수집기를 사용하여 애플리케이션의 메모리 제한을 즉시 변경할 수 있습니다. 이를 통해 수요에 따라 앱 리소스 소비를 늘리거나 줄일 수 있습니다. 수요가 낮으면 애플리케이션을 최소 수준으로 축소하여 필요하지 않은 리소스에 대한 비용을 지불하지 않도록 할 수 있습니다.

JSON 업그레이드

.NET에서 JSON 직렬화 및 역직렬화를 관리하는 방법도 개선되었으며, 새로운 half 구조체를 포함한 새로운 숫자 유형에 대한 지원이 추가되었습니다. 이는 IEEE float16 유형을 구현하므로 기계 학습 모델에 데이터를 전달할 때 유용합니다. 반정밀도 숫자는 하드웨어 가속기 및 NPU에 사용되는 부동 소수점 하드웨어는 물론 최근 Intel 프로세서에 추가된 새로운 숫자 명령과 더욱 밀접하게 일치하며 범용 GPU 컴퓨팅 도구를 더 쉽게 사용할 수 있게 해줍니다. 직렬화에서 숫자 값을 반정밀도로 정규화하면 이와 같은 도구가 보다 효율적으로 작동할 수 있습니다.

.NET 팀은 새로운 유형에 대한 지원을 추가하는 것 외에도 JSON 도구에 대해 많은 작업을 수행했습니다. 새로운 API 방법을 사용하면 JSON 문서에 특정 노드를 더 쉽게 작성할 수 있으며, 다른 기능은 .NET에서 JSON 콘텐츠를 관리하는 방법을 개선합니다. 이러한 업데이트는 JSON 문서의 무결성을 보장하고 클라우드 네이티브 개발에서 .NET의 역할을 강화하는 데 도움이 됩니다. 이제 JSON은 REST API를 호출할 때 가장 일반적인 페이로드를 나타내기 때문입니다.

임의성을 위한 새로운 .NET 방법

업데이트의 또 다른 주요 영역은 무작위성을 제공하는 새로운 도구에 대한 지원입니다. 이는 익숙한 난수 생성기가 아니지만 코드에서 무작위성을 선택기로 사용하는 보다 직접적인 방법입니다. 계산을 실행하는 대신 입력 세트에서 항목을 무작위로 선택하여 사용할 준비가 된 출력 배열에 배치할 수 있습니다. 이 도구는 데이터 세트에서 항목을 무작위로 섞는 옵션을 제공합니다. 다른 많은 새로운 .NET 기능과 마찬가지로 이 기능도 기계 학습 작업 시 유용할 수 있습니다. 예를 들어, 모델을 구축할 때마다 학습 데이터와 테스트 데이터가 달라지도록 데이터를 더 쉽게 섞을 수 있으므로 데이터의 편향 위험이 줄어듭니다.

이와 밀접하게 관련된 것은 SHA-2의 대안으로 SHA-3에 대한 지원을 추가하는 새로운 암호화 도구 세트입니다. 향상된 해싱은 다가오는 암호화 표준에 맞게 코드를 준비하는 데 도움이 되므로 항상 중요합니다. 기타 향상된 보안 기능은 이제 HTTPS를 통해 웹 프록시를 처리할 수 있어 앱과 나머지 인터넷 간의 연결 개인정보 보호가 향상된다는 의미입니다.

.NET 및 차세대 실리콘

일부 새로운 기능은 실리콘 발전과 관련되어 있으므로 모든 플랫폼에서 사용할 수는 없습니다. 여기에는 Intel AVX-512 명령어 세트를 기반으로 구축된 벡터 가속 기능이 포함됩니다. .NET 8은 AVX 지원을 테스트하기 위한 플래그를 제공하므로 이전 하드나 AMD 또는 Arm 프로세서에서 새 벡터 명령을 호출하지 않도록 오류 처리 코드를 작성할 수 있습니다. AVX-512 하드웨어가 있는 경우 .NET의 업데이트된 컴파일러는 최신 하드웨어 기능을 계속 사용할 수 있으므로 이전 벡터 및 배열 명령어에 대한 향상된 성능을 제공합니다.

새로운 시간 추상화 기능과 같이 일부 업데이트는 덜 간단해 보입니다. 이를 통해 현재 현지 시간 또는 UTC 이외의 다른 시간대에서 작동하도록 설정할 수 있는 현지 시간 공급자를 만들 수 있습니다. 이는 테스트를 위한 모의 시간을 생성하는 방법이므로 애플리케이션이 실행되는 시간대를 프로그래밍 방식으로 제어하여 시간 관련 및 타이머 관련 버그를 찾을 수 있습니다.

.NET 8의 주요 변경 사항

기존 코드에 대한 가장 큰 위험은 .NET 8의 주요 변경 사항에서 비롯됩니다. 이들 중 대부분은 지원 인프라에 대한 계획된 지원 중단 또는 변경의 결과이므로 놀랄 일이 아닙니다. 코드 변경이 필요할 때마다 해결 방법을 사용할 수 있으므로 여기에는 문제가 너무 많지 않아야 합니다.

.NET은 더 이상 Windows 전용 기술이 아니기 때문에 많은 변화를 가져오는 영역 중 하나는 번들 컨테이너 이미지입니다. 이러한 변경 사항은 주로 호스트 Linux 배포판의 업그레이드된 버전(예: Debian 호스트의 버전 범프)과 이미지를 더 작고 사용하기 쉽게 만드는 변경 사항으로 인해 발생합니다. 가장 큰 변화 중 일부는 Alpine 이미지에 있습니다. Alpine에는 더 이상 Kerberos에 대한 지원이 포함되지 않고 인증서가 저장되는 위치가 변경되었기 때문입니다. 3MB는 컨테이너 이미지 크기를 크게 줄이는 것처럼 보이지 않을 수 있지만 Kubernetes 애플리케이션 수명 주기 동안 배포되는 이미지 수를 고려하면 각 3MB는 대역폭을 상당히 절약해 줍니다.

다른 변경 사항은 공유 라이브러리에 대한 .NET의 종속성에 대한 향상된 이해에서 비롯됩니다. 필요하지 않은 경우에는 더 이상 포함되지 않습니다. 이는 .NET 코드에는 영향을 미치지 않지만 동일한 컨테이너에서 실행되는 다른 코드에는 영향을 미칠 수 있습니다. 보안 위험을 줄이므로 기능을 격리된 상태로 유지하는 것이 가장 좋습니다. 따라서 .NET 컨테이너를 사용하여 다른 코드를 호스팅하는 경우 코드가 올바르게 분할되도록 애플리케이션을 다시 설계하는 것이 좋습니다.

Microsoft는 .NET 8 미리 보기 설명서에서 정기적으로 업데이트되는 주요 변경 사항 목록을 제공하여 변경 사항이 발생한 미리 보기를 나타냅니다. 대부분은 첫 번째 미리 보기에 있었으며 최신 릴리스에는 소수만 추가되었습니다. 많은 변화는 행동에 관한 것입니다. 따라서 기능이 제거되거나 변경된 경우에도 새로운 작업 방식이나 대안으로 전환할 수 있어야 합니다.

Windows Forms를 조심하세요

모니터링해야 할 중요한 영역 중 하나는 .NET 8의 Windows Forms 구현입니다. Microsoft는 Windows Forms가 픽셀 크기 조정을 제공하는 방식을 변경했으므로 사용자에게 새 빌드를 푸시하기 전에 UI를 테스트해야 합니다. 양식 코드는 실패할 가능성이 없지만 올바르게 표시되지 않아 사용자 환경이 좋지 않을 수 있습니다. 이 중 대부분은 높은 DPI 화면을 지원하여 디스플레이 크기가 조정될 때 양식이 올바르게 작동하도록 보장하기 위한 것입니다.

.NET 8에는 이 간략한 개요보다 더 많은 내용이 있습니다. 일부 새로운 기능을 사용하면 사전 컴파일된 애플리케이션을 더 쉽게 구축할 수 있고 다른 기능은 Apple 실리콘의 성능을 향상시킵니다. 종합해보면 .NET 8은 LTS 릴리스에 대한 대규모 업데이트처럼 느껴집니다. 여기서 얻는 것은 향후 3년 동안 코드 경쟁력과 보안을 유지하는 데 충분할 것입니다. 이는 .NET과 같은 플랫폼에서 원하는 것입니다.

저작권 © 2023 IDG Communications, Inc.

Share this Article
Leave a comment

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다