这次.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还是一个非常牛逼的功能,但也不可随意使用,还是存在很多诸多兼容性的问题,项目上线必须保证完整、高质量的测试才行。
更多开源项目请查看:一个专注推荐.Net开源项目的榜单
我是编程乐趣,一个.Net开发经验老程序员,欢迎“关注”我,每天为你分享开源项目和编程知识。
也欢迎加入【.Net技术编程交流社区】,和大家共同学习交流!,点击加入:https://bbs.csdn.net/topics/613465368
- End -
推荐阅读
Ocelot:.NET开源API网关提供路由管理、服务发现、鉴权限流等功能
基于.Net开源Html解析器,此外还支持SVG、XML等格式
一个C#跨平台的机器视觉和机器学习的开源库
基于.Net开源Html解析器,此外还支持SVG、XML等格式
一款针对EF Core轻量级分表分库、读写分离的开源项目