预览版 · 开源
编写 XAML,
交付真正的 HTML。
像网站一样加载的 Web 应用:没有 WebAssembly,浏览器里没有运行时,也不用写 JavaScript。同一份代码还能成为 Windows、macOS 和 Linux 上的原生应用,两端都支持热重载。
每秒请求数
1,398
中位延迟
20.9 ms
模拟流量,每秒在服务器上计算。
XAML 已保存 · 28 毫秒
0 行 JavaScript
来自服务器的实时数据
一套代码,所有屏幕
Web
Windows
macOS
Linux
Android · 即将推出
iOS · 即将推出
.NET 10
C#
XAML
Aioros.Cosmo
Aioros.Pictor
Aioros.Graphs
Web
Windows
macOS
Linux
Android · 即将推出
iOS · 即将推出
.NET 10
C#
XAML
Aioros.Cosmo
Aioros.Pictor
Aioros.Graphs
问题所在

一个产品,两套技术栈

团队用一套技术栈发布网站,再用另一套开发桌面应用;或者把网站装进 Web 视图,称之为原生。要么维护两套同步的代码,要么得到一个永远不够原生的应用。
Web 应用
组件与客户端状态 · 面向客户端的 API 层 · 打包工具及其配置 · 水合
原生应用
另一套 UI 工具包,往往还是另一种语言 · 自己的导航与数据加载 · 或者一个自带浏览器的 Web 视图
使用 Aioros
一个 XAML 页面及其视图模型 · 在服务器加载,在 Web 上渲染为 HTML · 同一页面在桌面上原生运行
一份 XAML,所有平台

你写的页面,就是用户得到的页面

页面就是 XAML 加上视图模型。服务器把它编译成计划,返回 HTML 与 CSS;桌面端原生运行同一份 XAML。代码旁边的卡片就是这段代码,由你正在访问的服务器渲染。
Pages/report/Page.axaml
<c:Card> <c:CardHeader Title="Weekly report" Description="Sent every Monday to your team." /> <c:CardContent> <ToggleSwitch Content="Include charts" IsChecked="{Binding Charts}" /> </c:CardContent> <c:CardFooter> <Button Content="Save" Command="{Binding Save}" /> </c:CardFooter> </c:Card>
每周报告
每周一发送给你的团队。
实时,来自服务器

你看着,它就在更新

后台服务每秒触发一次并使一个数据键失效。只有读取它的视图会重新渲染,服务器再把它们推送到每个打开的页面。
没有 WebSocket 代码,没有客户端状态,也没有你自己的 JavaScript。
每秒请求数
1,398
中位延迟
20.9 ms
在线访客
3,433
请求数,最近 60 秒
031323334353600900120015001800
031323334353600900120015001800
模拟流量,每秒在服务器上计算。
开发体验

保存文件,即见变化。

Web 开发者对一个严肃框架所期待的工具,现在服务于 Web 与桌面上的 XAML。
Pages/Page.axaml
<StackPanel Spacing="12">
<TextBlock Text="Hello, world" />
<TextBlock Text="Hello, Aioros" />
</StackPanel>
编辑即可见
Hello, world
Hello, Aioros
已保存 · 28 毫秒
两端热重载
XAML 修改约 30 毫秒上屏,C# 修改约 75 毫秒,Web 与桌面皆是如此,并保留滚动位置、焦点和已输入内容。
错误定位到 XAML 行
构建失败或页面抛出异常时,页面上方会出现标明文件与行号的浮层;修复后浮层自动消失。
aioros dev
一条命令即可带热重载运行应用、自动寻找空闲端口并报告构建结果,面向 Web,或加上 --desktop。
构建时检查
分析器与代码修复会在运行前发现会让页面在生产环境出错的问题;服务器无法编译的页面会在对应行让构建失败。
性能

在第一个请求之前完成编译

页面只追踪一次,生成直接从视图模型写出 HTML 的计划。在同一台机器上,与用各技术栈实现的同一应用对比测得。
10.2×
快于启用缓存的服务器渲染 Next.js
7.8×
快于 Blazor 静态服务器渲染
2.1×
快于用 Go 实现的同一应用
4.3×
快于用 Rust(Leptos)实现的同一应用
每秒请求数(按页面)
Lumen,一个用五种技术栈分别实现的问题跟踪器;64 个连接,4 个服务器核心;第 241 次基准测试,2026 年 10 月。五个页面的几何平均值。
/issues/LUM-105/settings/inbox/issues/projects85,62057,96153,94331,91716,378
/issues/LUM-105/settings/inbox/issues/projects85,62057,96153,94331,91716,378
/issues/LUM-105/settings/inbox/issues/projects85,62057,96153,94331,91716,378
一应俱全

一个严肃框架应有的一切

渲染、数据、动效、多语言与无障碍,全部内置,在每个平台上保持一致。
28 ms
处处热重载
保存 XAML 或 C# 文件,所有打开的页面和窗口都会更新,并保留状态。
默认实时
使一个数据键失效,读取它的视图就会在所有屏幕上更新。
跟随你的主题
根据设备自动切换明暗,按访客区分,无闪烁。

Hello

Hola

你好
こんにちは
支持各种语言
按文化提供资源,每种语言一个地址,全部预编译。
Tab ↹
无障碍标记
原生元素、地标、标签与焦点,均由你的 XAML 生成。
真正的桌面应用
不是 Web 视图:原生窗口、原生渲染,页面完全相同。
Aioros.Cosmo · XAML 版 shadcn/ui

shadcn/ui 的全部组件,用 XAML 实现

全部 67 个组件,连同变体、设计令牌以及十二种明暗配色主题。在 Web 上每个组件都是真正的 HTML(按钮就是 <button>,链接就是 <a>);在桌面端则是原生控件。
67/67
已移植的 shadcn/ui 组件
99.5–100%
的像素与 shadcn/ui 自身渲染一致
12
种配色主题,含明暗模式
创建账户
在下方输入邮箱以创建账户。
通知
邮件摘要
推送通知
仅提及
在此修改账户信息,完成后点击保存。
保存更改
团队成员
Owner
SD
Sofia Davis
m@example.com
Member
JL
Jackson Lee
p@example.com
Viewer
IN
Isabella Nguyen
i@example.com
上传进度
按钮与徽章
Badge
Secondary
Outline
Destructive
探索 Cosmo
Aioros.Pictor · XAML 版 Recharts

Recharts 的图表,无需你写 JavaScript

以 XAML 实现 Recharts 2.15.4 的完整 API:由服务器写成 SVG,借助 CSS 和框架脚本实现交互,服务器推送新数据时实时更新,在桌面端原生绘制。
12
种图表类型,覆盖 Recharts 的全部导出
96×
比 Recharts 的服务端渲染更快
2.15.4
所遵循 API 的 Recharts 版本
Page BPage DPage EPage G

Page A

  • Uv : 4000
  • Pv : 2400

Page B

  • Uv : 3000
  • Pv : 1398

Page C

  • Uv : 2000
  • Pv : 9800

Page D

  • Uv : 2780
  • Pv : 3908

Page E

  • Uv : 1890
  • Pv : 4800

Page F

  • Uv : 2390
  • Pv : 3800

Page G

  • Uv : 3490
  • Pv : 4300
Page BPage CPage DPage EPage G

Page A

  • Uv : 4000
  • Pv : 2400

Page B

  • Uv : 3000
  • Pv : 1398

Page C

  • Uv : 2000
  • Pv : 9800

Page D

  • Uv : 2780
  • Pv : 3908

Page E

  • Uv : 1890
  • Pv : 4800

Page F

  • Uv : 2390
  • Pv : 3800

Page G

  • Uv : 3490
  • Pv : 4300
面积图
Page BPage DPage EPage F

Page A

  • Amt : 1400
  • Pv : 800
  • Uv : 590

Page B

  • Amt : 1506
  • Pv : 967
  • Uv : 868

Page C

  • Amt : 989
  • Pv : 1098
  • Uv : 1397

Page D

  • Amt : 1228
  • Pv : 1200
  • Uv : 1480

Page E

  • Amt : 1100
  • Pv : 1108
  • Uv : 1520

Page F

  • Amt : 1700
  • Pv : 680
  • Uv : 1400
Page BPage CPage DPage EPage F

Page A

  • Amt : 1400
  • Pv : 800
  • Uv : 590

Page B

  • Amt : 1506
  • Pv : 967
  • Uv : 868

Page C

  • Amt : 989
  • Pv : 1098
  • Uv : 1397

Page D

  • Amt : 1228
  • Pv : 1200
  • Uv : 1480

Page E

  • Amt : 1100
  • Pv : 1108
  • Uv : 1520

Page F

  • Amt : 1700
  • Pv : 680
  • Uv : 1400
组合图
MathChineseEnglishGeographyPhysicsHistory
雷达图
探索 Pictor
Aioros.Graphs · C# 版 d3

d3 的绘图引擎,逐字节一致

从 d3 移植的比例尺、形状、曲线、层级、弦图、桑基图和力导向布局,并以 d3 自身的输出作为测试基准:SVG 路径数据逐字节一致,由 C# 结构体和 span 写出,每个点都不分配内存。
19/19
个图表与 d3 逐字节一致
2.7×
在这些图表上比 d3 更快
3.8×
在 52 项微基准测试中更快
力导向网络
分区旭日图
弦图
圆形打包图
整齐树
流图
探索 Graphs
对比

一套技术栈取代两套

产品团队需要编写并保持同步的内容,逐项对比。
Web 技术栈 + 桌面技术栈
Web 视图应用
Aioros
需要同步维护的代码库
2
1
1
需要编写的 JavaScript
很多
很多
无
桌面原生渲染
服务器渲染、可被索引的页面
无需客户端代码的实时更新
Web 与桌面热重载
平台与路线图

现在与未来

在 Aioros 支持的所有平台上运行同样的页面,并不断扩展。
Web
已支持
Windows
已支持
macOS
已支持
Linux
已支持
Android
即将推出
iOS
即将推出
预览版:Web、Windows、macOS 与 Linux
面向人类与智能体的设计时
Android 与 iOS
1.0 版本
常见问题

你的问题,我们来解答

我需要编写 JavaScript 吗?
不需要。页面由 XAML 和 C# 编写。框架自带一个小脚本用于导航、实时更新与动效,即使没有它,每个页面也能正常工作。
XAML 页面如何变成 HTML?
每个页面只追踪一次,生成直接从视图模型写出 HTML 与 CSS 的计划,因此每次请求几乎无需额外工作。
可以使用现有的 XAML 吗?
可以。Aioros 兼容 Avalonia 的 XAML,包括其控件、样式、绑定和视图模型。
可以用于生产环境吗?
目前是预览版:框架及其库均经过测试与性能测量,但在 1.0 之前 API 仍可能变化。
它运行在哪里?
服务器与桌面均运行于 .NET 10:Web 端支持任意浏览器,桌面端为 Windows、macOS 与 Linux 上的原生窗口。
开始使用

用 XAML 构建你的下一个应用

带真实仪表盘的模板、支持热重载的开发服务器,以及适用于 Web 与桌面的一套代码。
bash
$
dotnet new install Aioros.Cosmo.Templates
$
dotnet new cosmo -n MyApp
$
cd MyApp && aioros dev
✓ Ready on http://localhost:3000 · hot reload on
1
安装模板
dotnet new install Aioros.Cosmo.Templates
2
创建应用
dotnet new cosmo -n MyApp
3
带热重载运行
cd MyApp && aioros dev
加上 --desktop,即可在原生窗口中打开同一个应用。