文章目录
一、什么是 .NET AOT
.NET AOT(Ahead-of-Time Compilation)是一种编译策略,其中.NET应用程序在运行之前就已经被完全编译为本地机器代码。
相比传统的JIT编译,AOT在启动速度和资源占用上有显著优势,尤其在运行大规模应用时表现突出。AOT编译后的代码是二进制,提高了反编译代码的难度,使得应用更安全;同时可以减少编译后的文件大小,节省IO空间,并减少内存的使用。
优点,简而言之就是:
1.启动速度快
2.减少运行时资源占用
3.提高程序安全性
4.减少依赖,体积更小
二、什么是 Webview2
WebView2是微软推出的一项技术,旨在为Windows应用程序提供强大的Web内容呈现能力。WebView2基于Chromium引擎,允许开发者在桌面应用中嵌入HTML、CSS和JavaScript等Web技术,从而构建丰富的用户界面。它使用Microsoft Edge作为渲染引擎,支持在WinForm、WPF、WinUI、Win32等本地应用程序中嵌入Web内容。
你可以把Webview2理解为一个乞丐版的Edge浏览器,同时可以对其用代码进行一系列的操作。
Webview2的主要功能特性有:
1.支持系统:Windows 7、8、10和11,提供一致的用户体验
2.代码共享:允许开发者在多个平台上重用代码,提高开发效率
3.本机功能:可以访问完整的本机API集,实现本地功能
4.快速应用:利用Web开发的优势,实现快速部署和迭代
三、为什么要 AOT + Webview2
试想一下:
1.你辛辛苦苦开发的应用,一上线就被反编译了,泄露了源码;
2.用户在下载你的应用时,包很大,用户又网速不好,下载需要的时间比较久;
3.用户好不容易下载好了,一打开应用,提示还需要安装.Net Framework/.Net Core运行时框架才能运行;
4.用户根据你提前写好的操作手册,找到了官网,下载好了相应运行时,一点击安装,提示当前系统不支持(比如:.Net Framework 4.8和.Net 8在不带Sp1的Win7上就安装失败);
5.这时候用户面临的选择:要么升级系统,承担因升级系统带来的风险、时间和精力消耗,要么不用你的应用;
6.由于你的应用万中挑一,光彩夺目,用户升级了系统,安装好了运行时,打开了你的软件,发现:启动速度慢、界面不好看、性能不如意……@#¥%,退钱!!!
以上任意一条都是让用户弃用你产品的理由,也都是让作为开发者的你崩溃的原因。
那么问题来了,现在我告诉你:有一个AOT + Webview2 的方案可以解决以上痛点,而且可以用你熟知的Web开发技能开发优美的桌面程序,且支持各个版本的Windows操作系统。你跟不跟?
四、.NET 9 AOT包在Win系统上的测试
高版本的.NET肯定比低版本的.NET的AOT能力更好,因此我们直接上.NET 9,开发好Demo后进行测试
由于64位系统是兼容32位应用程序的,所以我在打包的时候,打的是32位的包,进行的测试
1.Win 11 (通过)
2.Win 10 (通过)
3.Win8/8.1 (通过)
测试的系统是Win8.1
4.Win7 (通过)
测试的Win7系统版本不带Sp1补丁包,所以如果是Win7 Sp1版本,更是不在话下
在与Win7系统的测试中,32位系统和64位系统我都测试过,测试结果都是通过
5.XP (待测)
VM虚拟机里要不就是装不上XP系统,要不就是装上之后运行时卡顿,弃坑。后续找个实体机装上系统了再试,届时再把测试结果发上来。
五、总结
本文AOT发布后的demo已上传至资源,可下载体验。
从上面的情况看,至少在Win7及以上系统,AOT发布后是直接能运行的,且支持Webview2组件。
其实到这里,这个结果已经覆盖了绝大部分使用群体。
当然XP系统由于低占用的优势,现有存量也是蛮多的,尤其是在老机器上。
接下来,请用你熟知的技能,尽情Coding吧。
七、问题解答🔥
因为好多朋友在使用AOT和Webview2的时候,向我提出了很多问题,我整理一些主要的在这里,希望可以让大家对AOT和Webview2有个更清晰的认识
1.可以用Webview2中的JS调用后台C#代码?
可以
2.C#代码里能否使用BeginInvoke和Invoke增强性能?
可以
3.Native AOT并裁剪之后的程序体积有没有办法更小一点?
有,可以把体积降低30%-90%不等
4.Webview2适配Win7吗?
当然,本文就是枚举AOT+Webview2的系统兼容性的
5.Webview2的安装方式,常青引导和常青独立,我该选哪个?
个人建议【常青引导】,因为会根据你的系统版本,下载对应的安装组件,兼容性更好
六、鸣谢
感谢以下兄弟姐妹打赏本篇文章,排名不分先后:
昵称 | 金额 | 时间 ↓ |
---|---|---|
时光 | 28.00 | 2024.11.22 |
魏岩 | 50.00 | 2024.11.29 |
Steven Song | 48.00 | 2024.12.12 |
千古 | 18.80 | 2024.12.18 |
千古 | 16.60 | 2024.12.18 |
千古 | 50.00 | 2024.12.18 |
北海の樱花 | 8.80 | 2024.12.29 |
许** | 28.00 | 2025.01.20 |
请叫我红领巾 | 48.00 | 2025.02.17 |
浩秦 | 50.00 | 2025.04.26 |
📢 要源码和解决方案,可以扫下方微信名片:吴所畏惧
都看到这里了,各位帅哥/美女,不管有用没用,都帮忙点个赞呗,❤️谢谢~
-
Author
- 吴所畏惧 2024.11.15