[翻译] 感谢 Avalonia, .NET MAUI 即将来到 Linux 和浏览器端
感谢 Avalonia, .NET MAUI 即将来到 Linux 和浏览器端
原文地址:https://avaloniaui.net/blog/net-maui-is-coming-to-linux-and-the-browser-powered-by-avalonia
借助于 Avalonia 框架, 我们正在将 .NET MAUI 移植到 Linux 和浏览器平台。
过去几个月,我们一直在 MAUI 生态系统工程师的指导和反馈下,开发基于 Avalonia 的 .NET MAUI 后端。最初只是一个实验,如今已发展成为一个我们全力投入的项目,应用也已在新平台上运行。现在是时候向您展示我们的成果了。
立即体验
在深入了解细节之前,您可以先亲自体验一下:通过你的浏览器启动 MAUI
这是一个真正的 MAUI 应用程序,运行在 WebAssembly 上,通过 Avalonia 渲染,没有任何插件或隐藏技巧。虽然它仍处于早期版本,存在一些瑕疵,但它证明了一点:MAUI 现在可以在所有主流桌面操作系统和浏览器中运行。
什么是 Avalonia MAUI 后端?
Avalonia MAUI 后端的核心功能是让您保留现有的 MAUI 代码库,同时将渲染层替换为 Avalonia。其目标非常明确:将您现有的 MAUI 应用程序扩展到其他平台,同时提升桌面性能。
实际上,这意味着多项重大优势。
1. Linux 桌面支持
.NET MAUI 应用程序可以作为一流的桌面应用程序在 Ubuntu、Debian 和 Fedora 等发行版上运行,共享同一个 Avalonia 渲染器,该渲染器目前已用于支持生产环境中要求苛刻的桌面应用程序。

2. 嵌入式 Linux
Avalonia 已可在嵌入式 Linux 设备上运行,从 Raspberry Pi 面板到工业级人机界面 (HMI) 均可适用。Avalonia MAUI 后端使用相同的后端,将这些功能也引入到 MAUI 中,因此您在 MAUI 中构建的应用程序可以与 Avalonia 运行在相同的嵌入式 Linux 目标平台上。
3. WebAssembly 支持
您今天可以在浏览器中打开的演示是一个真正的 MAUI 应用程序,它基于 WebAssembly 运行,由 Avalonia 渲染,客户端没有任何原生依赖项。这是一个早期版本,但它展示了目前的功能。MAUI 应用程序很快就可以免费部署到浏览器中。

4. 额外福利:Avalonia MAUI 后端也支持 Windows 和 macOS
在 Windows 和 macOS 上,它与 Avalonia 现有的成熟桌面架构无缝集成。在 macOS 上,早期测试表明,与 Mac Catalyst 方案相比,性能显著提升。在典型的桌面场景中,我们观察到性能提升超过两倍,这对于 MAUI 在桌面端的未来发展来说是一个非常令人鼓舞的迹象。
这一切之所以成为可能,是因为我们构建了一个基于 Avalonia 绘制式 UI 模型而非原生控件的 MAUI 版本。这不仅意味着您将获得更多平台支持和更佳性能,而且您的 MAUI 应用程序无论运行在 Windows、macOS、Linux、移动设备还是浏览器标签页中,都能保持外观和行为的一致性。
5. 更简单、更快捷的开发
对于 Avalonia 团队而言,这种架构具有一项重要的实际优势:我们只需针对一个平台:Avalonia 本身。单一目标意味着我们可以更快地推进开发,持续稳定地发布功能,并避免无休止地修复平台特定的极端情况。

我们不再为 iOS、Android、Windows、macOS、Linux 和 WebAssembly 分别维护不同的实现,而是只维护一个。这大大降低了平台兼容性问题的可能性,避免了因某些功能在 Android 上运行正常但在 iOS 上无法运行,或者在 Mac Catalyst 和 WinUI 3 上的渲染效果不同而耗费数小时的调试时间。在 Avalonia 上构建时,控件在所有平台上的渲染效果都相同,因为它们使用相同的渲染引擎。
这意味着,当我们添加新功能或修复 bug 时,它在所有平台上都能正常工作。不再会出现 “在移动设备上运行正常但在桌面端出现问题” 或 “在 Windows 上显示正常但在 macOS 上显示错误” 的情况。整个开发周期变得更加可预测,速度也显著提升。
对我们而言,这是一个巨大的优势。对于 MAUI 开发人员来说,这意味着后端能够更快、更可靠地演进。
为什么 Avalonia 要为 MAUI 构建后端?
这是一个很合理的问题。Avalonia 本身已经拥有一个蓬勃发展的生态系统。我们的社区也持续强劲增长,那么为什么还要投入这么多精力让 MAUI 在 Avalonia 上运行呢?
坦白地说,我们首先关注的是 .NET 客户端开发者,其次才是他们使用哪个入口。许多团队已经选择了 MAUI,他们喜欢它,并且希望获得更多功能。如果我们能够为他们提供 Linux 和浏览器支持,以及更佳的桌面性能,而无需重写代码,这与我们致力于让开发者满意并解决复杂问题的使命不谋而合。
这并非完全出于私心。构建 MAUI 后端也是我们学习的一种方式。在 Avalonia 上运行 MAUI 可以让我们清楚地看到 Avalonia 在移动端实现完全自然体验方面存在的不足,哪些 API 存在问题,哪些工具缺口至关重要,以及我们需要在哪些方面提升自身实力才能保持竞争力。我们在这里所做的工作将直接有助于增强 Avalonia 的功能。
此外,熟悉度也具有长远的益处。通过将 Avalonia 作为现有 MAUI 应用的后端,开发者可以深入了解我们的渲染器、功能和设计理念。部分团队很可能会继续使用 MAUI。而其他团队,在启动新项目或需要更底层的功能时,则可能直接基于 Avalonia 进行开发。如果这个后端能够随着时间的推移,吸引更多用户加入 Avalonia 生态系统,那将是一件好事。
因此,这个项目的目的并非 拯救 MAUI 免受其他框架的冲击,而是为现有 MAUI 开发者提供更大的开发空间和更多平台选择,了解他们的需求,并确保 Avalonia 成为他们未来开发项目的理想之选。
这对 MAUI 开发者为何至关重要
如果您从 MAUI 发布之初就关注它,您就会知道开发者一直以来提出的两个需求。
开发者希望 MAUI 支持 Linux 系统,包括桌面和嵌入式设备。他们还希望 MAUI 的绘制控件模型能够跨平台提供一致的行为,而不是依赖于每个系统自带的工具包。
Avalonia 后端完美地解决了这两个问题。Avalonia 是一个成熟的绘制式 UI 框架。
它提供:
- 在所有平台上实现硬件加速渲染
- 一致的布局和样式系统
- 高刷新率下的流畅动画
- 自定义渲染和视觉特效功能
- 广泛的平台覆盖
- 一个获得大量投资的、得到全面支持的平台
这些并非空谈。正是因为这些优势,Avalonia 才被 Unity、JetBrains 和 Schneider Electric 等公司应用于生产环境中。
通过在 Avalonia 之上构建 MAUI,您可以获得一个可预测的绘制式 UI 基础架构和更广泛的平台支持,而无需放弃您现有的代码库。您无需放弃 MAUI 即可使用 Linux 和网络。您可以继续使用 MAUI,同时还能提升在 Windows 和 macOS 上的体验。
性能与下一代渲染
性能是本文的重要组成部分。
相比封装原生工具包,采用绘制式、GPU 友好的 UI 架构能提供更大的性能提升空间。
我们正与 Google 的 Flutter 团队合作,将他们的 GPU 优先渲染器 Impeller 移植到 .NET 平台。这项工作已在进行中,一旦完成,MAUI 后端也将受益于这些性能提升。
我们的目标很简单:利用推动 Flutter 发展的底层技术,在桌面、移动和嵌入式平台上实现更快的渲染速度、更低的电池消耗和更流畅的动画效果。
深入阅读:[Read more about our Impeller collaboration with Google(https://avaloniaui.net/blog/avalonia-partners-with-google-s-flutter-t-eam-to-bring-impeller-rendering-to-net)
展望未来
我们尤其感谢 MAUI 的工程师们,他们在后端开发过程中分享了宝贵的反馈和想法。.NET 客户端生态系统只有在不同团队能够相互协作、共同进步时才能发挥其最佳效用。
这仅仅是个开始。随着 Linux 和浏览器支持的日趋成熟,MAUI 最终将兑现其作为真正跨平台应用 UI 的承诺。我们将持续分享开发过程中的预览、基准测试和最新进展,一旦后端稳定性达到预期,我们将根据 MIT 许可证发布完全开源的源代码。
浙公网安备 33010602011771号