.NET MAUI đang tiến ra Linux và trình duyệt web, với sức mạnh đến từ Avalonia.
Trong vài tháng qua, chúng tôi đã làm việc trên một backend do Avalonia cung cấp cho .NET MAUI, với sự hướng dẫn và phản hồi từ các kỹ sư trong hệ sinh thái MAUI. Những gì bắt đầu như một thử nghiệm đã phát triển thành một dự án mà chúng tôi cam kết theo đuổi, với các ứng dụng đã chạy trên các nền tảng mới. Đã đến lúc cho bạn thấy những gì chúng tôi đang xây dựng.
Mục lục
Hãy Dùng Thử Ngay
Trước khi đi sâu vào chi tiết, bạn có thể tự mình trải nghiệm:
Khởi chạy MAUI trong trình duyệt của bạn →
Đây là một ứng dụng MAUI thực sự đang chạy trên WebAssembly, được hiển thị thông qua Avalonia, không có plugin hay thủ thuật ẩn nào. Đây là bản dựng ban đầu còn nhiều điểm thô, nhưng nó chứng minh được một điều: MAUI giờ đây có thể chạy trên mọi hệ điều hành máy tính để bàn chính và trong trình duyệt.
Avalonia MAUI Backend là gì?
Về cốt lõi, Avalonia MAUI Backend cho phép bạn giữ nguyên codebase MAUI của mình trong khi thay thế lớp hiển thị bằng Avalonia. Mục tiêu rất đơn giản: lấy các ứng dụng MAUI hiện có của bạn và mở rộng chúng sang các nền tảng bổ sung, đồng thời cải thiện hiệu suất trên desktop.
Về mặt thực tế, điều này mang lại nhiều lợi ích lớn.
Hỗ trợ Desktop Linux
Các ứng dụng .NET MAUI chạy như những ứng dụng desktop hạng nhất trên các bản phân phối như Ubuntu, Debian và Fedora, sử dụng cùng một trình kết xuất Avalonia vốn đã hỗ trợ các ứng dụng desktop đòi hỏi khắt khe trong sản xuất hiện nay.
Linux Nhúng (Embedded Linux)
Avalonia đã chạy trên các thiết bị Linux nhúng, từ bảng điều khiển Raspberry Pi đến HMI công nghiệp. Sử dụng cùng một backend, Avalonia MAUI Backend mang những khả năng đó đến với MAUI, vì vậy các ứng dụng bạn xây dựng trong MAUI có thể chạy trên các mục tiêu Linux nhúng tương tự như Avalonia.
Hỗ trợ WebAssembly
Bản demo bạn có thể mở trong trình duyệt ngay hôm nay là một ứng dụng MAUI thực sự chạy trên WebAssembly, được hiển thị bởi Avalonia, không có phụ thuộc native nào trên máy khách. Đây là bản dựng ban đầu, nhưng nó cho thấy những gì hiện có thể làm được. Các ứng dụng MAUI sẽ sớm có thể triển khai lên trình duyệt.
Phần thưởng: Avalonia MAUI Backend cũng chạy trên Windows và macOS
Trên Windows và macOS, nó tích hợp vào cùng một câu chuyện desktop hoàn thiện mà Avalonia đã có. Trên macOS, thử nghiệm ban đầu cho thấy hiệu suất được cải thiện đáng kể so với phương pháp Mac Catalyst. Chúng tôi đang thấy hiệu suất tăng hơn 2 lần trong các kịch bản desktop tiêu biểu, đây là một dấu hiệu rất khả quan cho tương lai của MAUI trên desktop.
Tất cả điều này khả thi bởi vì chúng tôi đã xây dựng một phiên bản MAUI nằm trên mô hình UI được vẽ (drawn UI) của Avalonia thay vì các điều khiển native. Bạn không chỉ có thêm nhiều nền tảng và hiệu suất được cải thiện, mà các ứng dụng MAUI của bạn còn có thể trông và hoạt động nhất quán cho dù chúng ở trên Windows, macOS, Linux, di động hay đang chạy trong tab trình duyệt.
Phát triển đơn giản hơn, nhanh hơn
Đối với nhóm Avalonia, kiến trúc này mang lại một lợi ích thực tế lớn: chúng tôi chỉ phải nhắm mục tiêu vào một nền tảng duy nhất: chính Avalonia. Mục tiêu đơn lẻ đó có nghĩa là chúng tôi có thể di chuyển nhanh hơn, phát hành các tính năng một cách nhất quán và tránh phải liên tục sửa các trường hợp ngoại lệ dành riêng cho từng nền tảng.
Thay vì duy trì các triển khai riêng biệt cho iOS, Android, Windows, macOS, Linux và WebAssembly, chúng tôi chỉ duy trì một phiên bản duy nhất. Điều đó làm giảm đáng kể khả năng xảy ra các sự cố nền tảng, thứ có thể ngốn hàng giờ gỡ lỗi khi một thứ hoạt động trên Android nhưng không hoạt động trên iOS, hoặc hiển thị khác nhau trên Mac Catalyst so với WinUI 3. Khi xây dựng trên Avalonia, các điều khiển hiển thị giống nhau ở mọi nơi vì chúng sử dụng cùng một engine kết xuất ở mọi nơi.
Điều đó có nghĩa là khi chúng tôi thêm một tính năng hoặc sửa một lỗi, nó hoạt động trên tất cả các nền tảng. Không còn tình trạng “cái này hoạt động trên di động nhưng hỏng trên desktop” hay “cái này trông đúng trên Windows nhưng sai trên macOS.” Toàn bộ chu kỳ phát triển trở nên dễ dự đoán hơn và nhanh hơn đáng kể.
Đối với chúng tôi, đó là một lợi thế đáng kể. Đối với các nhà phát triển MAUI, điều đó có nghĩa là backend phát triển nhanh hơn và đáng tin cậy hơn.
Tại sao Avalonia lại xây dựng Backend cho MAUI?
Đó là một câu hỏi công bằng. Avalonia đã có hệ sinh thái thịnh vượng của riêng mình. Chúng tôi thấy sự tăng trưởng mạnh mẽ, bền vững trong cộng đồng của mình, vậy tại sao lại đầu tư nhiều công sức như vậy để làm cho MAUI chạy trên nền tảng Avalonia?
Câu trả lời trung thực là chúng tôi quan tâm đến các nhà phát triển .NET client trước tiên, và việc họ sử dụng lối vào nào là thứ yếu. Nhiều nhóm đã chọn MAUI, họ thích nó và muốn nhiều hơn từ nó. Nếu chúng tôi có thể cung cấp cho họ hỗ trợ Linux và trình duyệt, cùng với hiệu suất desktop được cải thiện, mà không yêu cầu viết lại toàn bộ, điều đó phù hợp với sứ mệnh của chúng tôi là làm hài lòng các nhà phát triển và giải quyết các vấn đề phức tạp.
Điều này không hoàn toàn vị tha. Xây dựng một backend MAUI cũng là một cách để chúng tôi học hỏi. Chạy MAUI trên Avalonia làm nổi bật những gì còn thiếu để Avalonia cảm thấy hoàn toàn tự nhiên trên di động, API nào có vấn đề, khoảng trống công cụ nào quan trọng, và nơi chúng tôi cần nâng cấp để duy trì tính cạnh tranh. Công việc chúng tôi đang làm ở đây trực tiếp góp phần củng cố Avalonia.
Cũng có một lợi ích lâu dài về sự quen thuộc. Bằng cách sử dụng Avalonia làm backend cho các ứng dụng MAUI hiện có của họ, các nhà phát triển có được cái nhìn sâu sắc về trình kết xuất, khả năng và cách tư duy của chúng tôi. Một số nhóm đó sẽ tiếp tục ở lại với MAUI. Những nhóm khác, khi họ bắt đầu một dự án mới hoặc cần thứ gì đó cấp thấp hơn, có thể xây dựng trực tiếp trên Avalonia thay thế. Nếu backend này trở thành một cầu nối đưa nhiều người hơn vào hệ sinh thái Avalonia theo thời gian, đó là một chiến thắng.
Vì vậy, dự án này không phải là về việc “cứu” MAUI khỏi các framework khác. Nó là về việc cung cấp cho các nhà phát triển MAUI hiện tại thêm không gian và các nền tảng bổ sung, học hỏi từ nhu cầu của họ, và đảm bảo Avalonia là một lựa chọn cạnh tranh, hiển nhiên cho bất cứ thứ gì họ xây dựng tiếp theo.
Tại Sao Điều Này Quan Trọng Đối Với Các Nhà Phát Triển MAUI
Nếu bạn đã theo dõi MAUI kể từ khi ra mắt, bạn sẽ biết hai yêu cầu chưa bao giờ biến mất.
Các nhà phát triển muốn hỗ trợ Linux, cả cho desktop lẫn cho các thiết bị nhúng. Họ cũng muốn một mô hình điều khiển được vẽ (drawn control model) cung cấp hành vi nhất quán trên các nền tảng, thay vì dựa vào bộ công cụ native có sẵn trên mỗi hệ thống.
Backend Avalonia giải quyết cả hai vấn đề đó trực diện. Avalonia là một framework UI được vẽ (drawn UI) hoàn thiện.
Nó cung cấp:
- Kết xuất tăng tốc phần cứng trên mọi nền tảng
- Hệ thống bố cục và tạo kiểu nhất quán
- Hoạt ảnh mượt mà ở tốc độ làm mới cao
- Khả năng kết xuất tùy chỉnh và hiệu ứng hình ảnh
- Phạm vi phủ sóng nền tảng rộng rãi
- Một nền tảng được hỗ trợ đầy đủ và đang nhận được đầu tư đáng kể
Đây không phải là những lời hứa lý thuyết. Chúng là những lý do tại sao Avalonia được sử dụng trong sản xuất bởi các công ty như Unity, JetBrains và Schneider Electric.
Bằng cách xây dựng MAUI trên nền tảng Avalonia, bạn có được một nền tảng UI được vẽ (drawn UI) có thể dự đoán được và một tập hợp nền tảng mở rộng, mà không cần phải vứt bỏ codebase hiện có của mình. Bạn không cần phải từ bỏ MAUI để có được Linux và web. Bạn có thể mang MAUI theo cùng, đồng thời cải thiện trải nghiệm trên Windows và macOS.
Hiệu Suất và Kết Xuất Thế Hệ Tiếp Theo
Hiệu suất là một phần quan trọng của câu chuyện này.
Một ngăn xếp UI được vẽ, thân thiện với GPU mang lại cho bạn nhiều không gian hơn so với việc bọc các bộ công cụ native.
Chúng tôi đang hợp tác với nhóm Flutter tại Google để mang Impeller, trình kết xuất ưu tiên GPU của họ, lên .NET. Công việc đó đang được tiến hành và khi nó hoàn thiện, backend MAUI sẽ kế thừa những lợi ích đó.
Mục tiêu rất đơn giản: kết xuất nhanh hơn, sử dụng pin thấp hơn và hoạt ảnh mượt mà hơn trên desktop, di động và nhúng, sử dụng cùng công nghệ nền tảng đang thúc đẩy Flutter tiến lên.
Đọc thêm về sự hợp tác Impeller của chúng tôi với Google →
Nhìn Về Phía Trước
Chúng tôi đặc biệt biết ơn các kỹ sư MAUI đã chia sẻ phản hồi và ý tưởng trong suốt quá trình chúng tôi phát triển backend này. Hệ sinh thái .NET client hoạt động tốt nhất khi các nhóm khác nhau có thể trao đổi và thúc đẩy nhau tiến lên.
Đây mới chỉ là sự khởi đầu. Khi hỗ trợ Linux và trình duyệt hoàn thiện, MAUI cuối cùng có thể sống đúng với lời hứa của nó như một UI ứng dụng thực sự đa nền tảng. Chúng tôi sẽ tiếp tục chia sẻ các bản xem trước, điểm chuẩn và cập nhật khi quá trình phát triển tiếp diễn, và một khi chúng tôi hài lòng với sự ổn định của backend, chúng tôi sẽ phát hành mã nguồn dưới dạng mã nguồn mở hoàn toàn theo giấy phép MIT.
→ Đăng ký quan tâm đến quyền truy cập sớm ←
Bài Viết Liên Quan
Avalonia hợp tác với nhóm Flutter của Google để mang Impeller Rendering lên .NET
Avalonia và nhóm Flutter của Google đang hợp tác để mang Impeller, trình kết xuất GPU thế hệ tiếp theo của Flutter, lên .NET.
LoongArch & Avalonia
Avalonia hỗ trợ nền tảng LoongArch của Loongson và nhấn mạnh khả năng thích ứng của framework cũng như tầm quan trọng của sự hợp tác này đối với cộng đồng công nghệ toàn cầu.



