6 年磨一剑!纯 C# 全自研轻量 UI 引擎|内核 < 200KB + .NET8 AOT 跨平台 + 百万数据 60fps
这是我利用 6 年业余时间,历经多次架构重构后,全链路自研的纯 C# 用户态跨平台 UI 引擎。
技术选型与演进
从最初基于 WinForms + GDI 摸索渲染与布局,到中间数次因性能、架构不足彻底推翻重构,最终选择 GLFW + SkiaSharp 构建跨平台渲染底座。这一过程深度融合了业界三大核心思想:
- Android View 绘制流程
- Jetpack Compose 函数式组合编程
- Flutter 渲染优化理念
当前 PC 客户端开发多基于 .NET 官方框架(WinForms/WPF/MAUI)、开源跨平台方案(Avalonia)、Web 套壳技术(Electron/Tauri)或 C++ 原生框架(Qt)。大多数开发者选择在这些成熟框架之上做二次封装。而本引擎坚持从 0 到 1 完全自研,涵盖渲染管线、视图布局系统、动画调度、虚拟滚动、事件分发、主题体系及状态管理,形成全链路闭环。
核心设计理念
框架追求极简与高效,满足 90% 以上的桌面客户端 UI 需求。复杂绘图可直接对接底层 Skia 渲染,生成绘制指令并提交 GPU 执行。
- 单线程架构 + 对象复用机制:大幅降低 GC 压力。
- 元素结构无冗余设计:内存占用极低。
- 函数式组合编程 + 状态驱动:组件树一次声明、多处复用。
- 业务逻辑与 UI 结构高度内聚:不分散。
- 小而精:只提供最基础的原子组件,所有复杂组件(DataGrid、TreeView、图表等)均通过基础组件积木式组合实现。
全程无黑盒、无深度封装、无 Web 套壳、无浏览器内核,回归原生渲染本质。
引擎核心亮点
- 纯 C# 用户态实现,Release 核心 DLL < 200KB
- 函数组合式 API + 状态对象驱动界面重组
- 自研无 Timer 高性能动画系统
- 完整 View 布局系统:Row/Column/Flow/ 虚拟滚动容器
- 百万级数据列表轻松稳定 60fps+
- 自研渲染管线 + 脏矩形局部刷新
- 底层对象池复用:SKPaint/SKFont/SKBitmap 全复用
- 窗口对接 Silk.NET.GLFW,渲染基于 SkiaSharp
- 支持 .NET8 AOT 原生发布
- 已验证:Windows / Ubuntu,macOS 理论 100% 支持
- 插拔式架构,可快速对接其他平台与渲染器
基础组件 & 扩展能力
内置基础组件包括 Text、Input、Icon、Row、Column、Flow、LazyRow、LazyColumn、LazyGrid、PopupCard。复杂组件如 DataGrid、TreeView、图表等,均可通过基础组件积木式组合实现,无需重写底层。


