.NET MAUI là gì?
.NET Multi-platform App UI (.NET MAUI) là một framework đa nền tảng để tạo ứng dụng di động và desktop gốc bằng ngôn ngữ lập trình C# và XAML.
Sử dụng .NET MAUI, bạn có thể phát triển ứng dụng có thể chạy trên Android, iOS, macOS và Windows từ một mã nguồn chung duy nhất.

Nguồn: What is .NET MAUI?
.NET MAUI là một dự án mã nguồn mở và là sự tiến hóa của Xamarin.Forms, được mở rộng từ các kịch bản di động đến desktop, với các điều khiển giao diện người dùng được xây dựng lại từ đầu để tối ưu hiệu suất và tính mở rộng. Nếu bạn đã sử dụng Xamarin.Forms trước đó để xây dựng giao diện người dùng đa nền tảng, bạn sẽ nhận thấy nhiều điểm tương đồng với .NET MAUI. Tuy nhiên, cũng có một số khác biệt. Sử dụng .NET MAUI, bạn có thể tạo ứng dụng đa nền tảng bằng một dự án duy nhất, nhưng bạn cũng có thể thêm mã nguồn và tài nguyên cụ thể cho từng nền tảng nếu cần thiết. Một trong những mục tiêu chính của .NET MAUI là cho phép bạn triển khai càng nhiều logic ứng dụng và bố cục giao diện người dùng của bạn càng tốt trong một mã nguồn duy nhất.
.NET MAUI dành cho những nhà phát triển muốn:
- Viết ứng dụng đa nền tảng bằng XAML và C#, từ một mã nguồn chung duy nhất trong Visual Studio.
- Chia sẻ bố cục và thiết kế giao diện người dùng trên các nền tảng khác nhau.
- Chia sẻ mã nguồn, kiểm thử và logic nghiệp vụ trên các nền tảng khác nhau.
Cách .NET MAUI hoạt động
.NET MAUI hợp nhất các API của Android, iOS, macOS và Windows vào một API duy nhất, cho phép nhà phát triển viết một lần và chạy mọi nơi, đồng thời cung cấp quyền truy cập sâu vào mọi khía cạnh của mỗi nền tảng gốc.
.NET 6 hoặc phiên bản mới hơn cung cấp một loạt các frameworks cụ thể cho từng nền tảng để tạo ứng dụng: .NET Android, .NET iOS, .NET macOS và thư viện Windows UI 3 (WinUI 3). Các frameworks này đều có quyền truy cập vào cùng một .NET Base Class Library (BCL). Thư viện này trừu tượng hóa các chi tiết về nền tảng cơ bản ra khỏi mã nguồn của bạn. BCL phụ thuộc vào .NET runtime để cung cấp môi trường thực thi cho mã nguồn của bạn. Đối với Android, iOS và macOS, môi trường này được triển khai bởi Mono, một phiên bản của .NET runtime. Trên Windows, .NET CoreCLR cung cấp môi trường thực thi.
Mặc dù BCL cho phép ứng dụng chạy trên các nền tảng khác nhau chia sẻ logic nghiệp vụ chung, các nền tảng khác nhau có các cách định nghĩa giao diện người dùng của ứng dụng theo cách khác nhau và cung cấp các mô hình khác nhau để xác định cách các yếu tố của giao diện người dùng giao tiếp và tương tác. Bạn có thể thiết kế giao diện người dùng cho từng nền tảng riêng biệt bằng cách sử dụng framework cụ thể của từng nền tảng (.NET Android, .NET iOS, .NET macOS hoặc WinUI 3), nhưng phương pháp này đòi hỏi bạn duy trì một mã nguồn cho từng họ thiết bị cụ thể.
.NET MAUI cung cấp một framework duy nhất để xây dựng giao diện người dùng cho các ứng dụng di động và desktop. Sơ đồ dưới đây cho thấy cái nhìn tổng quan về kiến trúc của một ứng dụng .NET MAUI:

Nguồn: What is .NET MAUI?
Chú ý các đánh dấu đỏ (1), (2), (3):
- (1) Trong một ứng dụng .NET MAUI, bạn viết mã nguồn chủ yếu tương tác với API của .NET MAUI.
- (2) Mã nguồn của ứng dụng cũng có thể trực tiếp tương tác với các API của nền tảng gốc (Ví dụ Android).
- (3) .NET MAUI sau đó trực tiếp sử dụng các API của nền tảng gốc (Ví dụ Android).
Ứng dụng .NET MAUI có thể được viết trên máy tính cá nhân hoặc Mac, và sau đó được biên dịch thành các gói ứng dụng gốc:
- Ứng dụng Android được xây dựng bằng .NET MAUI được biên dịch từ C# thành một ngôn ngữ trung gian (IL), sau đó được biên dịch just-in-time (JIT) thành một bộ nhớ lưu trữ gốc khi ứng dụng được khởi chạy.
- Ứng dụng iOS được xây dựng bằng .NET MAUI được biên dịch hoàn toàn trước thời gian (AOT) từ C# thành mã lập trình gốc ARM.
- Ứng dụng macOS được xây dựng bằng .NET MAUI sử dụng Mac Catalyst, một giải pháp từ Apple giúp chuyển ứng dụng iOS của bạn được xây dựng với UIKit lên máy tính đồng thời bổ sung thêm các API của AppKit và nền tảng khi cần thiết.
- Ứng dụng Windows được xây dựng bằng .NET MAUI sử dụng thư viện Windows UI 3 (WinUI 3) để tạo ứng dụng gốc dành cho máy tính chạy Windows. Để biết thêm thông tin về WinUI 3, vui lòng xem Windows UI Library.
.NET MAUI cung cấp gì?
.NET MAUI cung cấp một bộ sưu tập các điều khiển có thể được sử dụng để hiển thị dữ liệu, khởi chạy các hành động, chỉ định hoạt động, hiển thị bộ sưu tập, chọn dữ liệu và nhiều chức năng khác. Ngoài ra, .NET MAUI còn cung cấp:
- Một hệ thống định dạng phức tạp cho việc thiết kế trang.
- Nhiều loại trang để tạo ra các loại điều hướng phong phú, như hộp đựng (drawers).
- Hỗ trợ cho data-binding, giúp tạo ra các mẫu phát triển trang nhã và dễ bảo trì hơn.
- Khả năng tùy chỉnh các xử lý để tăng cường cách mà các yếu tố giao diện người dùng được hiển thị.
- Các API đa nền tảng để truy cập các tính năng thiết bị gốc. Các API này cho phép ứng dụng truy cập các tính năng của thiết bị như GPS, cảm biến gia tốc và trạng thái pin và mạng.
- Chức năng đồ họa đa nền tảng, cung cấp một bức tranh vẽ hỗ trợ vẽ và tô hình và hình ảnh, các hoạt động ghép nối và biến đổi đối tượng đồ họa.
- Hệ thống dự án đơn duy nhất sử dụng đa mục tiêu để hướng tới Android, iOS, macOS và Windows.
- .NET hot reload, giúp bạn có thể chỉnh sửa cả XAML và mã nguồn quản lý khi ứng dụng đang chạy, sau đó quan sát kết quả của sửa đổi mà không cần xây dựng lại ứng dụng.
API Đa Nền Tảng Cho Tính Năng Thiết Bị (device features)
.NET MAUI cung cấp các API đa nền tảng để truy cập các tính năng thiết bị gốc. Các ví dụ về chức năng được cung cấp bởi .NET MAUI để truy cập các tính năng thiết bị bao gồm:
- Truy cập các cảm biến như cảm biến gia tốc, la bàn và con quay trên thiết bị.
- Kiểm tra trạng thái kết nối mạng của thiết bị và phát hiện các thay đổi.
- Cung cấp thông tin về thiết bị mà ứng dụng đang chạy trên đó.
- Sao chép và dán văn bản vào bộ nhớ tạm của hệ thống, giữa các ứng dụng.
- Chọn một hoặc nhiều tệp từ thiết bị.
- Lưu trữ dữ liệu một cách an toàn dưới dạng cặp khóa/giá trị.
- Sử dụng các công cụ đọc văn bản tích hợp để đọc văn bản từ thiết bị.
- Bắt đầu các quy trình xác thực dựa trên trình duyệt lắng nghe để nhận phản hồi tới một URL đăng ký ứng dụng cụ thể.
Dự án Đơn Duy Nhất (Single project)
Dự án đơn duy nhất của .NET MAUI chuyển trải nghiệm phát triển cụ thể cho từng nền tảng bạn thường gặp khi phát triển ứng dụng và trừu tượng hóa chúng thành một dự án chung duy nhất có thể hướng tới Android, iOS, macOS và Windows.
Dự án đơn duy nhất của .NET MAUI cung cấp một trải nghiệm phát triển đồng nhất và đơn giản trên các nền tảng được hướng tới. Dự án đơn duy nhất của .NET MAUI cung cấp các tính năng sau:
- Một dự án chung duy nhất có thể hướng tới Android, iOS, macOS và Windows.
- Lựa chọn mục tiêu gỡ lỗi đơn giản cho việc chạy ứng dụng .NET MAUI của bạn.
- Các tệp tài nguyên được chia sẻ bên trong dự án duy nhất.
- Một tệp manifest ứng dụng duy nhất chỉ định tiêu đề, id và phiên bản của ứng dụng.
- Truy cập vào các API và công cụ cụ thể cho từng nền tảng khi cần thiết.
- Một điểm vào ứng dụng duy nhất đa nền tảng. Dự án đơn duy nhất của .NET MAUI được kích hoạt bằng cách sử dụng đa mục tiêu và việc sử dụng dự án theo kiểu SDK.
Hot Reload
.NET MAUI bao gồm hỗ trợ cho tính năng .NET Hot Reload, cho phép bạn chỉnh sửa mã nguồn quản lý của mình trong khi ứng dụng đang chạy, mà không cần phải tạm dừng hoặc đặt điểm dừng thủ công. Sau đó, các chỉnh sửa mã của bạn có thể được áp dụng vào ứng dụng đang chạy mà không cần biên dịch lại.
.NET MAUI cũng bao gồm hỗ trợ cho XAML Hot Reload, cho phép bạn lưu tệp XAML của mình và nhìn thấy các thay đổi được phản ánh trong ứng dụng đang chạy mà không cần biên dịch lại. Ngoài ra, trạng thái điều hướng và dữ liệu của bạn sẽ được duy trì, giúp bạn lặp lại nhanh chóng trên giao diện người dùng mà không bị mất vị trí trong ứng dụng.