当前位置:首页>排行榜>桌面端UI怎么选:WPF/WinForms、WebView2还是CefSharp

桌面端UI怎么选:WPF/WinForms、WebView2还是CefSharp

  • 更新时间 2026-09-25 14:05:59
桌面端UI怎么选:WPF/WinForms、WebView2还是CefSharp

上次写完CefSharp应用Demo,评论区和私信问题主要集中在两个:一个是问为什么套个浏览器,直接WPF做不行吗;一个是问为什么不用WebView2。

那我干脆这篇把三个放一起讲,看完你的项目该用哪个,基本不用再纠结了。

这几项技术可以分为两类

WPF、WinForms是原生UI,界面用XAML、拖控件画出来,渲染走的是系统这层的绘制体系;WebView2、CefSharp是壳+网页,窗口里嵌一个Chromium,界面用HTML/CSS/JS写,C#只管底层。

这一层差别直接确定了开发分工、包体积、部署方式。

WPF

原生渲染,不依赖任何浏览器,装完就跑。包也小,framework-dependent发布就几MB,self-contained也就几十MB,启动速度和内存占用是三个方案里最舒服的。

数据绑定、模板、动画XAML写起来很爽,复杂表格、多面板停靠这种很顺。UI和业务在同一个工程里,没有JS、C#互调这一层。

短板在UI开发成本:XAML有上手门槛,会写的人不如会写网页的多;现代化界面要做圆角卡片、流畅动效、流式布局,XAML能做但很费时间;前端同事想帮忙就得从0开始学。

适合的场景:工控上位机、医疗影像、长期挂机的监控软件,这类应用界面稳定、对性能和内存敏感,WPF反而是最优解。

WinForms

拖控件开发是真的快,一个内部工具一天就能出活;资料多,老程序员都会;稳定,这套东西二十年没大变,十年前代码都能用。

问题是观感就停在上个时代,默认那套控件UI太复古;改皮肤、自定义绘制要费很大劲;流式、自适应这类布局基本靠手写坐标,后期维护痛苦。

我的建议:给运维、给实施用的配置面板、设备调试小工具,WinForms照样香;对外交付的新项目,慎重。

WebView2

微软官方方案,窗口里嵌Edge内核。界面交给前端,Vue、React也能上,换肤换版只动UI层;Win10较新的版本和Win11基本预装了运行时,还跟着系统自动升级,你的程序本体只有几MB,AnyCPU都行,不用像CefSharp那样锁死x64。

代价有两个。

一是内核不打在你包里,机器上没装运行时,程序起来就是白屏,发布前要自己检测、引导安装。

二是Evergreen自动升级,版本不完全归你控制。你在131上测好的页面,用户机器哪天升到137,某个CSS行为变了,就会导致错乱。

互调用postMessage和ExecuteScriptAsync:页面window.chrome.webview.postMessage发消息回C#,C#用ExecuteScriptAsync执行JS。够用,但比CefSharp的BindObjectAsync啰嗦一些。

适合的场景:面向普通用户联网分发的软件、企业内部系统的客户端、界面迭代快的业务系统。机器Win10/11、能联网、在意安装包大小,选它。

CefSharp

把整个Chromium(CEF)打进你的发布目录,走哪带哪。好处是离线机器友好:发包即用,版本你自己锁死,几百台机器渲染表现完全一致,出问题能复现。医院自助机、工控屏、内网环境,这两条原则在就必须用。

互调用BindObjectAsync,C#对象直接暴露给页面,方法名小驼峰,强类型调用,写起来最舒服。CachePath、代理、自定义Scheme这些控制粒度也细。

代价:

  • 发布目录一两百MB起步,压缩后安装包也不小
  • 要装VC++ 2022运行库,x86/x64要选死
  • 页面要播mp4得自己编译CEF
  • 社区维护,跟着CEF节奏走

对比表

WPF/WinForms
WebView2
CefSharp
界面技术
XAML/控件
HTML/JS
HTML/JS
内核依赖
无
机器上的Edge运行时
自带CEF
包体积
几MB~几十MB
几MB
一两百MB
启动/内存
最轻
中间
最重
谁来做界面
C#自己
前端
前端
互调
不需要
postMessage
BindObjectAsync
离线机器
直接跑
要先装运行时
直接跑
版本控制
自己定
Evergreen自动升
自己定

怎么选

不要管哪个技术更新,按这个顺序问自己:

  1. 界面谁来写?只有C#的人、界面不复杂、追求稳定省资源 → 直接WPF/WinForms,别给自己加一层浏览器
  2. 前端有团队、界面要现代化、换版频繁 → 走壳,接着问下一题
  3. 客户机能不能联网、可不可控?能联网的Win10/11 → WebView2
  4. 内网、离线、版本要锁死、批量部署 → CefSharp

当年公司医院自助机就是按这套走下来,最开始也是WPF,最后选择CefSharp:界面每家医院都不一样,必须前端做UI层,C#专注串口、读卡器、打印机;机器不让上外网,不允许装运行时,版本必须锁死,几百台机器批量Ghost一个镜像。所以最优选择就是CefSharp。

反过来,做个联网的门店系统、给内部用的业务客户端,选WebView2,包小;如果跨Linux、macOS,这三个都不行,去看下Avalonia、Tauri。

大家公司桌面端现在用的哪套,是什么项目,可以在评论区留言。

往期推荐

随机文章