Có gì mới trong .NET 10?

Giới thiệu

Hãy khám phá những tính năng mới trong .NET 10 và tìm các tài liệu liên quan. Trang này được cập nhật cho Preview 2.

.NET 10, phiên bản kế nhiệm của .NET 9, sẽ được hỗ trợ trong ba năm với tư cách là một bản phát hành LTS (Long-Term Support). Bạn có thể tải .NET 10 tại đây.

Phản hồi của bạn rất quan trọng! Nếu bạn có câu hỏi hoặc góp ý, hãy tham gia thảo luận trên GitHub.


.NET Runtime

.NET 10 Runtime giới thiệu các tính năng mới và cải thiện hiệu suất. Những cập nhật quan trọng bao gồm:

  • Devirtualization phương thức interface trong mảng: JIT giờ có thể devirtualize (loại bỏ tính đa hình) và inline các phương thức interface trong mảng, giúp tối ưu hiệu suất khi duyệt mảng.
  • Giảm abstraction khi duyệt mảng: Cải thiện để giảm chi phí abstraction khi sử dụng enumerator, giúp inlinestack allocation tốt hơn.
  • Inlining phương thức devirtualized muộn: JIT giờ có thể inline những phương thức ban đầu không đủ điều kiện, nhưng sau đó có thể devirtualize nhờ inlining trước đó.
  • Devirtualization dựa trên quan sát từ inlining: JIT sử dụng thông tin kiểu chính xác thu thập từ quá trình inlining để devirtualize các lời gọi phương thức tiếp theo.
  • Cấp phát stack cho mảng value type: Các mảng nhỏ của value types (không chứa GC pointers) có thể được cấp phát trên stack thay vì heap, giúp giảm áp lực lên Garbage Collector.
  • Hỗ trợ AVX10.2: Bổ sung hỗ trợ Advanced Vector Extensions (AVX) 10.2 cho bộ xử lý x64, nhưng mặc định bị tắt.
  • Cải tiến NativeAOT: Hỗ trợ thêm ép kiểu (casting)phép phủ định (negation) trong type preinitializer của NativeAOT.

Xem thêm: Có gì mới trong .NET 10 runtime.


.NET Libraries

Các thư viện trong .NET 10 có nhiều cải tiến quan trọng:

  • Tìm chứng chỉ bằng SHA-256 và các thuật toán khác (không chỉ SHA-1).
  • Hỗ trợ đọc dữ liệu PEM từ ASCII/UTF-8: Các API xử lý PEM encoding giờ có thể đọc trực tiếp dữ liệu ASCII/UTF-8.
  • Hỗ trợ DateOnly trong ISOWeek: Thêm overload mới trong lớp ISOWeek để hỗ trợ kiểu DateOnly.
  • Chuẩn hóa chuỗi Unicode với spans: Các API mới cho phép Unicode string normalization hoạt động trực tiếp với Span<char>, giảm số lượng cấp phát bộ nhớ.
  • So sánh chuỗi có thứ tự số học: Tùy chọn CompareOptions.NumericOrdering giúp so sánh chuỗi theo quy tắc số học (vd: "File9" < "File10").
  • Overload mới của TimeSpan.FromMilliseconds: Overload một tham số giúp khắc phục lỗi với LINQ expressions.
  • Cải thiện hiệu suất ZipArchive: Tối ưu hóa giúp giảm mức sử dụng bộ nhớ và tăng tốc khi cập nhật hoặc trích xuất song song.
  • Cải tiến OrderedDictionary: Thêm TryAddTryGetValue trả về index để truy xuất nhanh hơn.
  • Cập nhật JSON serialization: Source generator giờ hỗ trợ chỉ định ReferenceHandler trong JsonSourceGenerationOptionsAttribute.
  • Ma trận phép biến đổi tay trái (left-handed transformations): Thêm API mới để tạo ma trận biến đổi kiểu left-handed.
  • Cải tiến xuất PKCS#12: Hỗ trợ chỉ định thuật toán mã hóa và băm khi xuất PKCS#12/PFX.

Xem thêm: Có gì mới trong .NET 10 libraries.


.NET SDK

Những cải tiến trong .NET 10 SDK bao gồm:

  • Loại bỏ package không cần thiết: .NET SDK giờ có thể tự động loại bỏ các package được cung cấp bởi framework nhưng không được sử dụng, giúp giảm thời gian build và dung lượng ổ đĩa.
  • Thống nhất thứ tự câu lệnh trong CLI: Thêm alias noun-first cho các lệnh dotnet CLI, giúp tăng tính nhất quán và dễ đọc.

Xem thêm: Có gì mới trong .NET 10 SDK.


.NET Aspire

Phiên bản .NET Aspire 9.1 tập trung vào các cải tiến chất lượng cuộc sống (quality-of-life fixes).

Xem thêm: Có gì mới trong .NET Aspire 9.1.


ASP.NET Core

Bản phát hành ASP.NET Core 10.0 mang đến nhiều cải tiến:

Blazor

  • Thêm component ReconnectModal vào template Blazor Web App, giúp UI tái kết nối mượt mà hơn.
  • NavigateTo không cuộn trang nếu điều hướng đến cùng một trang.
  • NavLink bỏ qua query strings và fragments nếu sử dụng NavLinkMatch.All.
  • Thêm RowClass vào QuickGrid để áp dụng style cho hàng dựa trên dữ liệu.
  • Thêm CloseColumnOptionsAsync vào QuickGrid để đóng options của cột bằng code.
  • Blazor framework script giờ là static web asset: Hỗ trợ precompressionfingerprinting.

OpenAPI

  • Hỗ trợ OpenAPI 3.1.
  • Hỗ trợ xuất OpenAPI dưới dạng YAML.
  • Điền XML doc comments vào tài liệu OpenAPI.

Minimal APIs

  • Cải thiện test cho ứng dụng dùng top-level statements.
  • Chuỗi rỗng trong form post sẽ được coi là null nếu kiểu là nullable value type.

Authentication & Authorization

  • Thêm metrics mới cho các sự kiện xác thực và phân quyền.

Các cập nhật khác

  • Thêm RedirectHttpResult.IsLocalUrl để kiểm tra URL nội bộ.
  • Hỗ trợ syntax highlighting cho route trong RouteAttribute.

Xem thêm: Có gì mới trong ASP.NET Core cho .NET 10.


C# 14

C# 14 mang đến nhiều tính năng mới:

  • Field-backed properties: Từ auto-implemented property có thể dễ dàng chuyển sang property có getter/setter tùy chỉnh bằng cách truy cập field.
  • nameof hỗ trợ generic chưa gán kiểu: nameof(List<>) trả về "List" mà không cần chỉ định type argument.
  • Hỗ trợ chuyển đổi Span<T> ngầm định: Giúp lập trình với Span<T> và ReadOnlySpan<T> tự nhiên hơn.
  • Hỗ trợ ref, in, out trong lambda expression.
  • Tính năng thử nghiệm - String literals trong phần data của PE file: Tăng hiệu suất cho một số trường hợp.
  • Hỗ trợ partial events và constructors.

Xem thêm: Có gì mới trong C# 14.


Trích nguồn từ: (https://devblogs.microsoft.com/dotnet/dotnet-10-preview-1/)

Lên trên