1 điểm bởi GN⁺ 2025-11-13 | 1 bình luận | Chia sẻ qua WhatsApp
  • Thông qua backend dựa trên Avalonia, ứng dụng .NET MAUI nay có thể chạy trên desktop Linux và trình duyệt (WebAssembly)
  • Vẫn giữ nguyên codebase MAUI hiện có nhưng thay lớp kết xuất bằng Avalonia, từ đó đồng thời đạt được cải thiện hiệu năng và mở rộng nền tảng
  • Hoạt động với cùng một engine kết xuất trên desktop Linux như Ubuntu, Debian, Fedora, Linux nhúng và môi trường WebAssembly
  • Trên Windows và macOS cũng ghi nhận hiệu năng tăng hơn 2 lần, đồng thời cung cấp UI nhất quán không khác biệt giữa các nền tảng
  • Đây là dự án mang đến cho lập trình viên MAUI hỗ trợ Linux·web và chu kỳ phát triển dễ dự đoán, đồng thời trở thành nền tảng để mở rộng hệ sinh thái Avalonia

Tổng quan về Avalonia MAUI Backend

  • Avalonia MAUI Backend có cấu trúc giữ nguyên codebase MAUI nhưng thay thế bằng lớp kết xuất Avalonia
    • Có thể mở rộng ứng dụng MAUI hiện có sang các nền tảng bổ sung như Linux, trình duyệt
    • Đồng thời cải thiện hiệu năng desktop và đảm bảo tính nhất quán giữa các nền tảng
  • Bản demo thực tế là ứng dụng MAUI dựa trên WebAssembly, có thể chạy trong trình duyệt mà không cần plugin
    • Dù mới là bản build ban đầu, nó đã chứng minh MAUI có thể hoạt động trên các hệ điều hành desktop chính và trình duyệt

Hỗ trợ nền tảng chính

  • Hỗ trợ desktop Linux
    • Chạy như ứng dụng desktop hạng nhất trên Ubuntu, Debian, Fedora...
    • Sử dụng bộ kết xuất Avalonia để cung cấp chất lượng ở mức ứng dụng desktop hiệu năng cao
  • Hỗ trợ Linux nhúng
    • Chạy với cùng backend như Avalonia trên thiết bị nhúng như bảng điều khiển Raspberry Pi, HMI công nghiệp
  • Hỗ trợ WebAssembly
    • Hiện thực ứng dụng MAUI chạy trong trình duyệt không cần phụ thuộc native
    • Dự kiến sẽ tiếp tục phát triển tới mức có thể phân phối qua trình duyệt trong tương lai
  • Hỗ trợ Windows và macOS
    • Tích hợp với kiến trúc kết xuất desktop đã trưởng thành của Avalonia
    • Trên macOS, quan sát thấy hiệu năng cải thiện hơn 2 lần so với Mac Catalyst

Hiệu quả phát triển và tính nhất quán

  • Đội ngũ Avalonia chỉ phát triển hướng tới một nền tảng duy nhất (Avalonia)
    • Không cần các triển khai riêng biệt cho iOS, Android, Windows, macOS, Linux, WebAssembly
    • Giảm lỗi theo nền tảng và khác biệt trong kết xuất
  • Do dùng cùng một engine kết xuất, UI được thể hiện giống nhau trên mọi nền tảng
    • Khi thêm tính năng hoặc sửa lỗi, có thể áp dụng ngay cho tất cả nền tảng
    • Rút ngắn chu kỳ phát triển và đảm bảo chất lượng dễ dự đoán

Vì sao Avalonia xây dựng backend cho MAUI

  • Ưu tiên hỗ trợ lập trình viên .NET client, giúp người dùng MAUI có được hỗ trợ Linux·trình duyệt và cải thiện hiệu năng
  • Thông qua dự án này, Avalonia học hỏi về tính thân thiện với di động, các vấn đề API và những điểm cần cải thiện trong tooling
  • Kỳ vọng hiệu ứng thu hút vào hệ sinh thái khi lập trình viên MAUI trải nghiệm bộ kết xuất và tính năng của Avalonia
  • Mục tiêu không phải thay thế MAUI mà là mang đến nhiều lựa chọn rộng hơn cho lập trình viên MAUI hiện tại

Ý nghĩa với lập trình viên MAUI

  • Cung cấp hỗ trợ Linuxmô hình UI dựa trên vẽ nhất quán mà lập trình viên MAUI đã liên tục yêu cầu
  • Avalonia cung cấp các tính năng như sau
    • Kết xuất tăng tốc phần cứng
    • Hệ thống layout·style nhất quán
    • Animation tần số quét cao
    • Kết xuất tùy biến và hiệu ứng hình ảnh
    • Độ bao phủ nền tảng rộng
    • Nền tảng được đầu tư và hỗ trợ liên tục
  • Đã được sử dụng trong các môi trường thương mại như Unity, JetBrains, Schneider Electric
  • Vẫn giữ nguyên mã MAUI hiện có trong khi đồng thời đạt được cải thiện hiệu năng trên Linux·web·desktop

Hiệu năng và kết xuất thế hệ tiếp theo

  • Với UI stack dạng vẽ thân thiện GPU, đạt hiệu năng cao hơn toolkit native
  • Đang phối hợp với nhóm Google Flutter để đưa bộ kết xuất GPU Impeller vào .NET
    • Khi công nghệ này được áp dụng, backend MAUI cũng sẽ kế thừa tốc độ kết xuất nhanh hơn, tiết kiệm pin hơn và animation mượt hơn

Kế hoạch sắp tới

  • Tiếp tục cải thiện chất lượng backend thông qua hợp tác với các kỹ sư MAUI
  • Khi hỗ trợ Linux và trình duyệt đạt đến mức trưởng thành, MAUI sẽ hoàn thiện thành một framework UI đa nền tảng thực sự
  • Sau khi ổn định, dự kiến công bố mã nguồn mở theo giấy phép MIT
  • Sẽ tiếp tục chia sẻ tiến độ phát triển, benchmark và preview

1 bình luận

 
GN⁺ 2025-11-13
Ý kiến Hacker News
  • Việc mang kiểu tính năng này lên web thực sự rất thú vị
    Nhưng khi thử demo thì không hề có cảm giác “giống web”
    Không thể tìm bằng Ctrl+F, cũng không thể chọn văn bản hay sao chép địa chỉ liên kết
    Trên di động cũng không thể nhấn giữ ảnh để chia sẻ, và trình đọc màn hình cũng không hoạt động
    Những điểm này cộng dồn lại tạo cảm giác rằng “đây không phải web thật sự”
    Nó giống như một hòn đảo nội dung phong phú bị tách khỏi trình duyệt kiểu Java applet cuối thập niên 90 hay Flash, Silverlight đầu những năm 2000

    • Đây hoàn toàn không phải vấn đề nhỏ nhặt
      Thiếu những tính năng này thì theo đúng định nghĩa không thể gọi là “web thật sự”
      Cuối cùng nó dẫn tới câu hỏi mang tính triết học là “web là gì”
      Khiến người ta phải nghĩ xem đó chỉ là phương tiện truyền tải media, hay là một thứ gì đó lớn hơn
      Dạo này có nhiều người đã mệt mỏi với web bị app-hóa (app-lification) và nhớ về web mở ngày xưa
    • Nếu không dùng các tính năng web tiêu chuẩn thì sẽ thành cơn ác mộng về accessibility
      Tôi đã thử demo bằng trình đọc màn hình và nó hoàn toàn không hoạt động
    • MAUI vốn không dành cho web
      Đây cũng không phải hướng đi mà Microsoft chủ đích nhắm tới
      Chỉ là vì Avalonia hỗ trợ WASM nên khi đặt MAUI lên trên nó thì chạy được
      Nhưng như vậy về bản chất chỉ là render một desktop GUI toolkit bằng WASM
      Trông ngầu đấy, nhưng cảm giác giống phiên bản hiện đại của Silverlight hơn là web app
      Dù vậy, việc có thể nhắm tới desktop Linux vẫn là một lợi thế lớn
      Cũng sẽ có nhiều người thích kiểu render giao diện đồng nhất về hình thức như Avalonia hơn là việc MAUI dùng native control của từng nền tảng
    • Với tư cách là một lập trình viên .NET có 20 năm kinh nghiệm, tôi không hiểu tại sao ở thời điểm này người ta còn thử làm kiểu này
      Chỉ với CSS/JS/HTML của trình duyệt hiện đại cũng đã làm được phần lớn mọi thứ
      Tôi thích XAML, nhưng JSX cũng là khái niệm tương tự và cuối cùng biên dịch ra HTML thật
      Tôi cũng đã nghĩ y như vậy từ thời Silverlight — không hiểu vì sao người ta cứ muốn làm lại Flash mãi
      Unity Web build đã là một “C# Flash” tốt hơn rồi
    • Vừa thấy không hỗ trợ Ctrl+F và chọn văn bản là tôi mất hứng ngay
      Những tính năng cơ bản như vậy mà không có thì với tôi là không thể cân nhắc được (non-starter)
  • MAUI không hỗ trợ desktop Linux thì ngay từ đầu đã không nằm trong diện cân nhắc
    Bản bổ sung lần này có khá hơn phần nào, nhưng tôi vẫn nghĩ dùng trực tiếp Avalonia sẽ tốt hơn
    Dù vậy, có thêm lựa chọn này cho các dự án hiện có vẫn là điều đáng mừng

  • Cuối cùng thì ngoài Kotlin Multiplatform hay Electron, giờ cũng có thể làm các ứng dụng “UX kiểu điện thoại” chậm chạp với animation kỳ quặc trên Linux
    Nhưng bộ widget thì chỉ đến mức nút bấm và checkbox nên khá thất vọng
    Tôi thắc mắc vì sao các bản demo UI toolkit ngày nay lại thua cả demo thời Delphi 1

    • Thật ra cứ dùng Avalonia native là được
      Nó đã hỗ trợ Windows/Mac/Linux/WASM rồi
      Có vẻ phần việc lần này là dành cho những ai muốn mở rộng ứng dụng MAUI hiện có sang Linux/WASM
    • Avalonia vẫn chưa có backend Wayland, nhưng đang được phát triển với mức ưu tiên cao
      Có thể xem tiến độ trên blog Avalonia
  • Một trong những lý do khiến mọi người ngại MAUI trong hệ sinh thái .NET là vì chính Microsoft cũng không dùng nó
    Ngay cả Teams cũng dựa trên Electron
    Điều đó khiến người ta tự hỏi: “Microsoft còn không dùng thì tại sao chúng ta phải dùng?”

    • Đó là vì lý do lịch sử
      Bộ phận Windows phụ trách WinUI/Win32, Office phụ trách React, còn bộ phận developer thì phụ trách WPF và MAUI
      Kết quả là mỗi bộ phận đi một hướng và UI toolkit bị phân mảnh
      Cuối cùng mọi toolkit đều chỉ nhận được mức hỗ trợ nửa vời
    • Các ứng dụng desktop của Microsoft dạo này thường dùng trực tiếp WebView2 thay vì Electron
      Teams cũng như vậy khi chuyển từ Angular sang React
      Dù sao thì việc họ không dùng MAUI vẫn là sự thật
      Có vẻ người ta chuộng các công nghệ đã được kiểm chứng như Avalonia hay WinForms hơn
      Không rõ về lâu dài Microsoft sẽ thực sự chống lưng cho cái nào
      Cũng có Blazor, nhưng nó giống công cụ làm ứng dụng nội bộ hơn là thứ để thay React
      Nhân tiện, tôi cũng không chắc Google có tích cực dùng Flutter cho ứng dụng của chính họ hay không
    • Teams dùng Electron đơn giản là vì nó ra đời trước MAUI
      Teams phát hành năm 2017, còn MAUI được công bố năm 2022
      Thời điểm chuyển sang React cũng là trước khi có MAUI
      Tuy vậy, việc Microsoft không “dogfooding” MAUI đủ nhiều vẫn đáng lo
      Gần đây còn có tin cắt giảm nhân sự liên quan đến MAUI, khiến cảm giác niềm tin nội bộ đang yếu đi
      Cũng nên tính đến việc Flutter khởi đầu sớm hơn 5 năm
      Dù sao thì vẫn khó xóa được ấn tượng rằng Microsoft không thật sự dốc sức cho MAUI
    • Tôi sẽ không bao giờ làm frontend bằng .NET
      Kết cục lúc nào cũng là ngừng hỗ trợ
      Dùng công nghệ web tiêu chuẩn tốt cho sức khỏe tinh thần hơn
    • Dạo này Microsoft dùng gì thì cũng không còn đáng để tham khảo lắm
      (Không phải là đang bênh MAUI)
  • Để tránh nhầm lẫn, xin tóm lại
    .NET MAUI vốn là framework để tạo ứng dụng cho Android, iOS, macOS và Windows từ một codebase duy nhất
    Lần này chỉ là bổ sung thêm Linux và trình duyệt
    Tôi thử tạo ứng dụng Hello World trên Mac thì phần thiết lập khá phức tạp
    Nhưng sau một thời gian dài lại được dùng XAML cũng thấy vui

    • Nó có giống Flutter không?
  • Tôi đang làm phần mềm phục vụ phát triển nên cần một GUI đa nền tảng
    Ban đầu tôi thử MAUI nhưng ngay từ khâu cài đặt đã là ác mộng
    Ngay cả các tính năng UI cơ bản cũng không được hỗ trợ
    Sau đó tôi thử AvaloniaUI và trải nghiệm hoàn toàn ngược lại
    Cài đặt đơn giản, và chỉ cần tìm kiếm một chút là có thể dễ dàng làm được những thứ như cửa sổ trong suốt không viền
    Tích hợp với Visual Studio có hơi tiếc một chút, nhưng vẫn vượt xa MAUI

  • Cảm giác như Silverlight hồi sinh
    Tham khảo: wiki Microsoft Silverlight

  • Demo gần như không hoạt động trên Chrome
    Trò xếp hình trượt phản hồi chậm, và mũi tên quay lại thì bị treo
    Refresh thì quay về màn hình đầu
    Bộ chọn giờ và bộ chọn ngày cũng bị lệch căn chỉnh và thao tác rất khó chịu
    Tổng thể là rất tệ

    • Nếu bấm quay lại trong lúc đang xáo trộn thì toàn bộ ứng dụng bị treo cứng
      Chủ đề liên quan
  • Tôi đã chạy demo “Word puzzle” trong mục “Launch MAUI in your browser”
    Khi bấm ‘Randomize’, các ô bắt đầu bị xáo trộn, nhưng nếu quay lại bằng mũi tên phía trên thì màn hình bị khóa cứng hoàn toàn
    Câu đố vẫn nằm ở nền, menu thì chồng lên trên và không thể bấm gì cả
    Tình trạng này xảy ra giống nhau trên nhiều trình duyệt
    Liên kết demo

    • Nếu đợi xáo trộn xong thì có thể quay lại, nhưng cảm giác thao tác bằng chuột rất kỳ cục
      Click-drag không ổn định và cũng không có phản hồi thị giác
      Các ô không di chuyển mà chỉ dịch chuyển tức thời
      Thà bấm một cái hoặc có animation di chuyển còn hơn
      Người dùng khác cũng nêu đúng vấn đề này
    • Tôi thử máy tính thì 7/9 = 1
      Máy tính RPN thì thậm chí còn không thể đưa số vào stack
  • Tôi thực sự rất cần một UI toolkit có thể dùng để làm chương trình CAD thật sự
    Đã chán ngấy các ứng dụng trông như webview rồi

    • Hoàn toàn đồng cảm
      Tôi cực ghét xu hướng web UI của 10 năm qua
      Cứ to dần theo hướng ưu tiên cảm ứng, nhiều khoảng trắng, đầy animation vô ích
      Tôi muốn quay lại kiểu UI cũ tập trung vào mật độ thông tin và tính khả dụng
      Đó là điểm tôi thích ở các website Nhật Bản
    • Thật ra những thứ như CAD cũng có thể làm bằng bất kỳ toolkit nào, miễn là có một bề mặt render GPU
      Xem demo reel của Avalonia thì thấy ngay cả với stack GUI .NET cũng có thể làm được những thứ như trình biên tập video hay công cụ phân tích bản đồ
      Avalonia Showcase
    • Tiêu chí của tôi với GUI toolkit là có làm được phần mềm cỡ Photoshop hay không
      Nếu chỉ đến mức làm app thời tiết hay to-do thì không có ý nghĩa gì
    • Còn QT thì sao?
      WPF và WinForms cũng vẫn còn tồn tại thôi