抛弃 Electron!自研 C# UI 引擎XchyUI,内核仅 200KB,秒杀 Web 套壳!

抛弃 Electron!自研 C# UI 引擎XchyUI,内核仅 200KB,秒杀 Web 套壳!

6 年磨一剑!纯 C# 全自研轻量 UI 引擎|内核 < 200KB + .NET8 AOT 跨平台 + 百万数据 60fps

大家好,这是我利用6 年业余时间,历经无数次推翻重构,全链路自研的纯 C# 用户态跨平台 UI 引擎,今天第一次公开分享。

引擎的演进之路:从 WinForms + GDI 起步 → 多次架构重构 → 最终定型 GLFW + SkiaSharp深度融合业界三大核心思想:

  • Android View 绘制流程
  • Jetpack Compose 函数式组合编程
  • Flutter 渲染优化理念

当前PC客户端开发,大多基于以下技术体系: • .NET 官方框架:WinForms / WPF / WinUI / .NET MAUI • 开源跨平台方案:Avalonia • Web 套壳技术:Electron / Tauri • C++ 原生框架:Qt
绝大多数开发者与企业,都选择在这些成熟框架之上做二次封装、组件扩展,以此快速实现业务需求。
真正愿意从源头开始,全链路自研一整套UI引擎的开发者少之又少

而我的这套引擎,正是从0到1完全自研
渲染管线、视图布局系统、动画调度、虚拟滚动、事件分发、主题体系、状态管理,全部自主实现,形成全链路闭环
可满足 90% 以上的桌面客户端UI需求,复杂绘图可直接对接底层Skia渲染,生成绘制指令并提交GPU执行。

框架设计追求极简与高效:
• 单线程架构 + 对象复用机制,大幅降低GC压力
• 元素结构无冗余设计,内存占用极低
• 函数式组合编程 + 状态驱动界面重组
• 组件树一次声明、多处复用
• 业务逻辑与UI结构高度内聚,不分散
• 思想贴近 React / Flutter / Jetpack Compose,现代前端/移动端开发者可快速上手

与传统XML、重量级框架不同,本引擎坚持 小而精 的设计理念:
只提供最基础的原子组件,所有复杂组件(DataGrid、TreeView、图表、卡片等)均通过基础组件积木式组合实现。
框架不提供冗余、不内置臃肿组件,保持最轻量、最灵活、最可定制的核心优势。

全程无黑盒、无深度封装、无Web套壳、无浏览器内核,回归原生渲染本质。


引擎开发历程(真实走心)

从最初基于 WinForms + GDI 摸索渲染与布局,到中间数次因性能、架构、扩展性不足彻底推翻重构,再到最终选择 GLFW + SkiaSharp 构建跨平台渲染底座,6 年间不断打磨架构、优化渲染、精简内核。

最终沉淀出这套:极轻量、高性能、跨平台、纯 C# 用户态的 UI 引擎。每一行核心代码都经过反复推敲与验证。


引擎核心亮点

  • 纯 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、图表等,均可通过基础组件积木式组合实现,无需重写底层。

已实现 Demo

  • 百万数据高性能虚拟滚动列表
  • 仿微信 PC 端主界面
  • 饼图 / 柱状图 / 折线图 / 仪表盘
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

极简示例代码

ContentView(() => { // 垂直布局 Column(() => { // 响应式状态 var counterNum = StateValueOf(0); Text() .H3() .Binding(counterNum, (builder, num) => { builder.TextValue($"计数器:{num}"); }, true); // 无Timer循环动画 var visibleState = StateValueOf(true); var animateValue = AnimateFloatOf(visibleState, animate => { animate.Duration = 800; animate.Times = int.MaxValue; animate.Delay = 200; animate.Interpolator = XAnimationInterpolator.Uniform; }); Icon(SvgResources.CircleProgress) .Size(32) .Binding(animateValue, (builder, value) => builder.Rotate(value * 360) ); // 点击交互 Text("点击增加计数") .PrimaryButton() .Click(() => counterNum.Value++); }) .Size(WRAP) .Space(10); }); 
在这里插入图片描述

🚀 Demo 运行包(AOT 原生编译,开箱即用)

  • 提供 AOT 编译原生 exe,解压直接运行
    -[ ](通过网盘分享的文件:numdemo.zip
    链接: https://pan.baidu.com/s/1aEIAR4YdS2Blt9oVgPAjHA 提取码: hg4d)
  • 体积:exe + 非托管库共 24MB引擎自身 <200KB,体积来自 .NET 运行时 + Skia + GLFW
  • 运行系统要求
    • Windows 需 Win10 及以上(因 .NET8 AOT 最低支持 Win10)
    • Ubuntu 20.04 / 22.04 已验证
  • 首次启动稍慢:磁盘缓存 + GL 上下文 + Skia 初始化二次启动秒开,属原生渲染程序正常现象

关于 AI 是否会替代

AI 可以快速生成页面业务代码,但无法自研底层引擎。渲染管线、布局算法、虚拟滚动、脏矩形刷新、动画调度、内存池、深度性能优化……这些底层架构与多年沉淀的核心技术,才是真正壁垒,只会越来越稀缺。


后续计划

本项目为 6 年全自研成果,首次公开分享。如果关注和感兴趣的朋友较多,我会逐步开放:

  • 使用文档 & 开发教程
  • 函数式 UI 编写指南
  • 底层技术原理讲解(布局、渲染、动画、虚拟滚动)
  • 架构设计与性能优化细节
  • 开源 / 社区共建计划

欢迎交流,感谢支持!

Read more

Spring Web MVC 入门秘籍:从概念到实践的快速通道(上)

Spring Web MVC 入门秘籍:从概念到实践的快速通道(上)

个人主页:♡喜欢做梦 欢迎  👍点赞  ➕关注  ❤️收藏  💬评论 目录 一、什么是Spring Web MVC? 1.定义 2.关于MVC 2.1什么是MVC? 二、学习Sring MVC 1.项目准备 2.@RestController注解的介绍 3.@RequestMapping注解 1.@RequestMapping只用在类上(相当于“只给文件夹起名,不给文件起名”) 2.@RequestMapping只用在方法上(相当于“只给文件起名,不给文件夹起名”) 3.@RequestMapping用在类和方法上(相当于给文件夹和文件都取名) 三、Postman 1.什么是Postman? 2.关于API 3.传参介绍 1.普通传参:

正点原子lwIP实战解析——基于CGI与SSI的嵌入式WebServer开发

1. 嵌入式WebServer:让开发板变身迷你网站服务器 大家好,我是老张,在嵌入式这行摸爬滚打十几年了,从51单片机到现在的各种ARM核,项目做了不少。今天想和大家聊聊一个特别有意思、也特别实用的技术:用你手边的正点原子开发板,搭建一个属于自己的嵌入式Web服务器。听起来是不是有点酷?你可能会想,开发板不就是跑跑控制逻辑、读读传感器吗?怎么还能当服务器?没错,这就是lwIP协议栈和HTTP协议结合带来的魔力。 简单来说,嵌入式WebServer就是在你的STM32这类资源有限的微控制器上,运行一个轻量级的网络服务程序。它能够理解来自电脑或手机浏览器的HTTP请求,并返回一个网页。通过这个网页,你就能远程监控开发板的状态,比如实时查看温湿度传感器的读数,或者直接点击网页上的按钮来控制板子上的LED灯开关、蜂鸣器鸣叫。这就像是给你的硬件设备开了一个“管理后台”,而且这个后台是跨平台的,任何有浏览器的设备都能访问。 这个功能的应用场景非常广泛。比如说,你可以做一个智能家居的控制器,通过网页配置Wi-Fi参数、查看室内环境数据;或者做一个工业数据采集终端,现场人员用手机扫个码就能看到

Qwen3-32B开源可部署实践:Clawdbot Web网关+企业微信/钉钉集成指南

Qwen3-32B开源可部署实践:Clawdbot Web网关+企业微信/钉钉集成指南 1. 为什么需要这个组合:从大模型能力到办公场景落地 你有没有遇到过这样的情况:团队刚部署好Qwen3-32B,本地跑得飞快,但业务部门同事却说“用不上”?不是模型不好,而是缺了一座桥——一座把强大推理能力,稳稳接到日常办公入口的桥。 Clawdbot就是这座桥。它不替换你的Qwen3-32B,也不要求你改模型、重训练,而是用极轻量的方式,把Ollama托管的Qwen3-32B,变成企业微信里能直接@提问的AI助手,或是钉钉群中自动响应任务的智能协作者。 关键在于“直连Web网关”这四个字。它意味着:没有中间服务层、没有额外API网关、不走公网转发——Qwen3-32B的响应,从Ollama输出那一刻起,经由Clawdbot内置代理,毫秒级抵达聊天界面。这不是演示Demo,而是已在线上环境稳定运行超47天的真实部署方案。 本文不讲原理推导,不列参数表格,只聚焦三件事: 怎么让Qwen3-32B在Clawdbot里真正“活”起来; 怎么把Web网关8080端口安全、稳定地映射到18789对

【2025最新】基于SpringBoot+Vue的web酒店客房管理系统管理系统源码+MyBatis+MySQL

【2025最新】基于SpringBoot+Vue的web酒店客房管理系统管理系统源码+MyBatis+MySQL

摘要 随着旅游业的快速发展和人们生活水平的提高,酒店行业的管理需求日益复杂化,传统的手工管理方式已无法满足现代酒店高效运营的需求。酒店客房管理系统作为信息化管理的重要工具,能够有效提升客房资源的利用率、优化客户体验并降低运营成本。该系统通过数字化手段实现客房预订、入住、退房等全流程管理,为酒店管理者提供实时数据支持,同时为顾客提供便捷的在线服务。关键词:酒店管理、信息化、SpringBoot、Vue、MySQL。 本系统基于SpringBoot和Vue的前后端分离架构开发,后端采用SpringBoot框架实现业务逻辑处理和数据交互,前端使用Vue.js构建用户友好的界面。系统整合了MyBatis作为持久层框架,MySQL作为数据库存储数据,确保了系统的高效性和稳定性。功能模块包括客房管理、订单管理、用户管理和系统管理,支持多角色权限控制,如管理员、前台人员和顾客。系统实现了在线预订、实时房态查看、订单统计等功能,满足了酒店日常运营的多样化需求。关键词:前后端分离、角色权限、在线预订、房态管理、数据统计。 数据表 客房信息数据表 客房信息数据表中记录了酒店所有客房的基本信息和状