从零构建.Net前后端分离权限管理系统
这次.Net 8发布,更新了诸多功能,但从各个编程社区看到大家讨论和交流最多的,还是AOT这个功能。
AOT本身在.Net 7就开始引入了,但这次.Net 8做了诸多更新:
1、增加了macOS 平台的 x64 和 Arm64 体系结构的支持;2、针对Linux做了极大的更新,应用程序可以缩小最多50%。
3、同时可以支持配置以大小优先,还是以性能优先的编译配置,大家可以根据自身项目需求做平衡选择。
ASP.NET Core也引入AOT的支持,但也不是所有功能都支持,MVC还不支持目前,支持最好的是Web API。

针对ASP.NET Core主要做了如下优化:1、减少发布文件大小:可缩小容器映像和缩短部署时间;2、缩短启动时间;
3、减少内存需求。从下图看,应用程序大小、内存大小、启动时间都获得大大的提升与优化。

目前AOT在PC端支持最好:Windows、Liunx、macOS,移动平台还只是实验支持阶段,存在很多不预测问题,最好不要用于生产项目。
当然了,AOT也不是完全只有有点,没有缺点。AOT目前有以下限制:1、不支持动态加载,比如:Assembly.LoadFile;
2、不支持动态编译代码、动态类型创建、动态方法调用,比如:System.Reflection.Emit;3、不支持C++/CLI;4、不支持COM组件;5、使用System.Linq.Expressions性能反而会下降;6、当然还有更多细微的限制,在编译的时候VS会给出警告,编译的时候需要自行判断与处理。总之,AOT还是一个非常牛逼的功能,但也不可随意使用,还是存在很多诸多兼容性的问题,项目上线必须保证完整、高质量的测试才行。
最后推荐下我的知识星球,在星球里,我已编写了多个原创专栏、上百篇的编程与学习心得,带你从零学习框架的搭建,提供专门的编程交流学习群,并获取 1 对 1 的答疑指导服务。