Back to Explore
Microsoft nâng cấp .NET MAUI trong phiên bản .NET 11 Preview 6: Bước tiến mới cho CollectionView và Android Shell

Microsoft nâng cấp .NET MAUI trong phiên bản .NET 11 Preview 6: Bước tiến mới cho CollectionView và Android Shell

Phiên bản .NET 11 Preview 6 mang đến những cải tiến quan trọng cho .NET MAUI, tập trung vào hiệu năng của CollectionView trên Windows, tái cấu trúc Android Shell và tối ưu hóa Native AOT cho các ứng dụng hybrid.

Website
Upvote this postSign in to upvote this article.

Bài viết được dịch và tổng hợp từ tin tức gốc. Bạn có thể đọc bài viết gốc bằng tiếng Anh tại đây.

Điểm tin nhanh:

  • CollectionView2 (CV2) chính thức cập bến Windows, sử dụng WinUI ItemsRepeater để tối ưu hóa hiệu năng hiển thị danh sách.
  • Android Shell được tái cấu trúc hoàn toàn sang mô hình handler, thay thế các renderer cũ để tăng tính ổn định.
  • Cải thiện khả năng tương thích Native AOT và giới thiệu cơ chế phục hồi kết quả MediaPicker trên Android.

Việc duy trì hiệu năng trên các ứng dụng đa nền tảng luôn là bài toán đau đầu đối với các kỹ sư mobile. Khi hệ sinh thái .NET MAUI không ngừng tiến hóa, việc nắm bắt các thay đổi kiến trúc cốt lõi không chỉ giúp ứng dụng của bạn mượt mà hơn mà còn giảm thiểu đáng kể nợ kỹ thuật. .NET 11 Preview 6 vừa ra mắt chính là minh chứng cho nỗ lực của Microsoft trong việc hiện đại hóa hạ tầng, loại bỏ các di sản từ thời Xamarin.Forms để hướng tới một tương lai Native AOT hoàn hảo.

Ảnh bìa bài viết

Hiện đại hóa CollectionView trên Windows

Thay đổi đáng chú ý nhất trong bản cập nhật này là sự xuất hiện của CollectionView2 (CV2) trên Windows. Trước đây, các nhà phát triển thường gặp khó khăn với hiệu năng của danh sách trên Windows, nhưng với việc tích hợp WinUI ItemsRepeater, CV2 đã mang lại khả năng ảo hóa (virtualization) vượt trội, tương đương với những gì đã có trên Android, iOS và Mac Catalyst.

CV2 hỗ trợ đầy đủ các tính năng quan trọng:

  • Grouping và Selection.
  • Header và Footer.
  • Empty views.
  • Snapping và Incremental loading.
  • Tích hợp sâu với RefreshView.

Việc chuyển đổi sang kiến trúc mới này giúp các ứng dụng Windows đạt được độ phản hồi tốt hơn, đặc biệt là với các tập dữ liệu lớn. Nếu bạn đang loay hoay với việc tối ưu hóa giao diện, hãy cân nhắc áp dụng các tiêu chuẩn thiết kế dữ liệu mới như trong bài viết Tại sao các đội thi Hackathon chiến thắng luôn ưu tiên thiết kế dữ liệu trước khi chạm tay vào giao diện?.

Tái cấu trúc Android Shell

Microsoft đã thực hiện một bước đi táo bạo khi reimplement Shell trên Android bằng cách sử dụng các MAUI handlers tiêu chuẩn. Thay vì dựa vào các renderer cũ, giờ đây ShellItemHandler, ShellSectionHandler và ShellHandler được sử dụng, giúp tái sử dụng các thành phần từ FlyoutViewHandler và TabbedPage.

Lưu ý: Thay đổi này hiện chỉ áp dụng cho Android. Các ứng dụng có tùy chỉnh Shell sâu hoặc phụ thuộc vào renderer cũ cần được kiểm thử kỹ lưỡng trước khi nâng cấp lên phiên bản này.

Việc chuyển đổi kiến trúc này giúp đồng bộ hóa code base, giảm thiểu sự khác biệt giữa các nền tảng. Đây là bước đi cần thiết để hướng tới sự ổn định lâu dài. Để hiểu rõ hơn về việc quản lý các thay đổi kiến trúc phức tạp, bạn có thể tham khảo thêm về Kiến trúc xanh không phải là tấm khiên vạn năng: Tại sao kiểm thử tự động vẫn bỏ lọt lỗi nghiêm trọng.

Related sponsor icon

Cải tiến HybridWebView và Native AOT

Đối với các ứng dụng Hybrid, .NET 11 Preview 6 đã thay thế cơ chế reflection bằng source generator cho JavaScript interop. Điều này không chỉ loại bỏ các cảnh báo trimming mà còn giúp ứng dụng hoạt động ổn định trong môi trường Native AOT.

Bảng so sánh các cải tiến chính:

Tính năng Cải tiến Lợi ích
JS Interop Source Generator Loại bỏ reflection, hỗ trợ Native AOT
Android Shell Handler model Tăng hiệu năng, đồng bộ kiến trúc
MediaPicker Result recovery Tránh mất dữ liệu khi app bị kill
Geolocation MinimumDistance Tiết kiệm pin, tối ưu thông báo

Việc tối ưu hóa quy trình phát triển là chìa khóa để thành công. Nếu bạn quan tâm đến việc xây dựng môi trường phát triển chuyên nghiệp, hãy đọc thêm về Xây dựng môi trường phát triển Python chuyên nghiệp: Từ thiết lập cơ bản đến tối ưu hóa quy trình.

Đánh giá & Lời khuyên Thực tiễn

Ưu điểm:

  • Hiệu năng hiển thị danh sách trên Windows được cải thiện đáng kể nhờ ItemsRepeater.
  • Loại bỏ các package cũ giúp giảm dung lượng ứng dụng và tăng tính bảo mật.
  • Hỗ trợ tốt hơn cho các kịch bản Native AOT.

Nhược điểm:

  • Các thay đổi về Shell trên Android có thể gây ra các lỗi hồi quy (regression) đối với các ứng dụng có tùy chỉnh renderer phức tạp.
  • Việc loại bỏ Microsoft.Maui.Controls.Compatibility là một thay đổi phá vỡ (breaking change) đối với các dự án cũ.

Lời khuyên:

  • Hãy thực hiện backup project trước khi nâng cấp.
  • Kiểm tra kỹ các custom renderer trên Android.
  • Tận dụng các công cụ kiểm thử tự động để đảm bảo tính toàn vẹn của giao diện sau khi chuyển sang CV2.

Câu hỏi thường gặp (FAQ)

CollectionView2 có bắt buộc phải sử dụng trên tất cả các nền tảng không?

Hiện tại, CV2 đã được triển khai trên Android, iOS, Mac Catalyst và nay là Windows. Bạn nên ưu tiên sử dụng nó để tận dụng các cải tiến về hiệu năng.

Làm thế nào để xử lý việc mất dữ liệu MediaPicker trên Android?

Phiên bản này đã thêm các API mới để truy xuất, chờ đợi hoặc xóa kết quả media ngay cả khi ứng dụng bị hệ thống Android giải phóng bộ nhớ.

Tôi có thể tiếp tục sử dụng Microsoft.Maui.Controls.Compatibility không?

Không, package này đã bị loại bỏ trong Preview 6. Bạn cần refactor code để loại bỏ các phụ thuộc vào namespace này.

Kết luận

.NET 11 Preview 6 đánh dấu một bước tiến quan trọng trong việc hiện đại hóa hạ tầng của .NET MAUI. Dù có những thay đổi phá vỡ, nhưng lợi ích về hiệu năng và khả năng tương thích Native AOT là rất đáng giá. Hãy bắt đầu thử nghiệm ngay hôm nay để chuẩn bị cho các phiên bản chính thức sắp tới. Nếu bạn có bất kỳ thắc mắc nào về quá trình nâng cấp, đừng ngần ngại để lại bình luận phía dưới hoặc tham gia thảo luận cùng cộng đồng tại Gia nhập cộng đồng DEV: Tại sao đây là điểm đến không thể bỏ qua cho sự nghiệp lập trình của bạn.

Discussion (0)

You need to log in to post comments. Log In

No comments yet. Start the discussion!