.NET 8 预览版 1:NativeAOT 升级和新的Blazor United
.NET团队 今天在官方博客上 发布了.NET 8的第一个预览版,.NET 8 是一个长期支持 (LTS) 版本[1],.NET 的版本包括产品、库、运行时和工具,是 Microsoft 内部和外部多个团队之间的协作。.NET 8 预览版和候选发布版本将每月交付一次,最终交付时间是今年的.NET 大会 。
.NET 8 预览版 1 中的新增功能方面两点主要有两个:NativeAOT编译的完善,在Web开发方面,新的Blazor United项目融合了混合匹配服务器端和客户端渲染功能。
.NET团队首席项目经理的Jeremy Likness在 “宣布.NET 8 Preview 1 [2] 帖子中说 ,NativeAOT是在.NET 7中引入的,但开发团队将在11月发布的.NET 8 中投入更多工作,例如减小应用大小,Linux 版本现在缩小了 50%,使用Native AOT发布应用程序会创建一个完全独立的应用程序版本,不需要单独的运行时,因为所有内容都包含在单个文件中,从预览版1开始,这个文件更小。事实上,Linux 版本现在缩小了 50%。

在知乎上有大量的讨论 NativeAOT的缺席阻碍了.NET的采用,微软将NativeAOT的优势列为:
- 减少内存占用:与 JIT 编译的代码相比,AOT 编译的代码需要更少的内存,因为 JIT 编译器生成 AOT 编译应用程序中不需要的中间代码。这对于内存有限的设备(如嵌入式系统和移动设备)尤其有益。
- 缩短了启动时间:与 JIT 编译代码相比,AOT 编译的代码启动速度更快,因为它消除了 JIT 编译器生成中间代码并针对特定硬件和软件环境优化代码的需要。这对于必须快速启动的应用程序特别有用,例如系统服务、无服务器“函数”和后台任务。
- 延长电池寿命:与 JIT 编译代码相比,AOT 编译代码消耗的功率更少,因为它消除了 JIT 编译器生成中间代码并针对特定硬件和软件环境优化代码的需要。这对于依赖电池的设备(如移动设备)尤其有益。
与此同时,ASP.NET Core首席项目经理 Daniel Roth 写了文章ASP.NET .NET 8 预览版 1 中的核心更新[3],介绍了他的团队正在做什么,从史蒂夫·桑德森(Steve Sanderson)的原型项目开始,他称之为“Blazor United”:
Daniel Roth说到 “在.NET 8中,我们正在努力将服务器端和客户端渲染的优势结合到基于Blazor的单个全栈编程模型中,我们目前称这种努力为'开拓者联队'。Blazor United 将允许你使用单个基于 Blazor 的体系结构进行服务器端呈现,并与 Blazor Server 或 WebAssembly 进行完整的客户端交互。这一切都在一个项目中,能够在不同的渲染模式之间轻松切换,甚至在同一页面中混合它们。Blazor United还将启用新的渲染功能,例如流式渲染以及导航和表单帖子的逐步增强。
他还介绍了面向 Web 开发人员的本机 AOT:“.NET 7 引入了对将 .NET 控制台项目发布为NativeAOT[4] 的支持,生成一个独立的、特定于平台的可执行文件,没有任何运行时 JIT。本机 AOT 应用的启动速度非常快,并且使用更少的内存。可以将应用程序部署到未安装任何 .NET 运行时的计算机或容器。在 .NET 8 中,我们将把对NativeAOT的支持扩展到 ASP.NET Core,从使用最小 API 构建的以云为中心的 API 应用开始,这些应用可以满足有关已发布文件大小、启动时间、工作集和吞吐量性能的预期。
除了对本机AOT的讨论外,Likness还强调了其他关于容器映像,JSON改进,Linux支持等常规.NET 8工作。新的“.NET 8 中的新增功能”[5]文档中详细介绍了所有内容。 至于 ASP.NET Core改进的细节,有兴趣的读者可以查阅 .NET 8 的 ASP.NET Core路线图[6],其中以 Blazor 的 24 项为主,以 Blazor United 为首,如下图所示:

微软同时还发布了配套的开发工具支持:包括Visual Studio 2022 v17.5,Visual Studio for Mac 17.5和EFCore 8 Preview 1。
相关链接:
- [1]长期支持 (LTS) 版本: https://dotnet.microsoft.com/platform/support/policy/dotnet-core
- [2]宣布.NET 8 Preview 1: https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-1/
- [3]ASP.NET .NET 8 预览版 1 中的核心更新: https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-1/
- [4].NET 控制台项目发布为NativeAOT: https://learn.microsoft.com/dotnet/core/deploying/native-aot/
- [5].NET 8 中的新增功能: https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8
- [6].NET 8 的 ASP.NET Core路线图: https://github.com/dotnet/aspnetcore/issues/44984
.NET 8 预览版 1:NativeAOT 升级和新的Blazor United的更多相关文章
- 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...
- 官宣.NET 6 预览版4
我们很高兴发布 .NET 6 Preview 4.我们现在大约完成了 .NET 6 发布的一半.现在是一个很好的时机,可以再次查看.NET6的完整范围.许多功能都接近最终形式,而其他功能将很快推出,因 ...
- Visual Studio 2022 预览版3 最新功能解说
我们很高兴地宣布Visual Studio 2022 的第三个预览版问世啦!预览版3 提供了更多关于个人和团队生产力.现代开发和持续创新等主题的新功能.在本文中,我们将重点介绍Visual Studi ...
- .NET 7 预览版2 的亮点之 NativeAOT 正式合并入 .NET 主线
.NET 中备受追捧和期待已久的功能NativeAOT终于出现在本周的.NET 7 预览版2中,该项目的工作仍在继续,该版本将 NativeAOT 从实验性的 dotnet/runtimelab re ...
- win10预览版9926升级10049操作步骤
文章转自:豆豆系统收藏备用 win10预览版系统安装的用户非常多,现在最新版本已经到了10049,但是之前很多装了9926版本或者10041版本的同学在通过系统自动更新的时候,且发现,微软官方提供的速 ...
- WP8没有开发者账号升级GDR3预览版的方法
很多希望尝鲜WP8 GDR3的朋友一样希望提前体验GDR3的效果,但苦于没有开发者账号而不得其门!今天为大家带来普通账号升级GDR3的方法! 工具/原料 WP8智能手机 可用wifi热点 方法/步骤 ...
- windows 10预览版升级win10 7月29 10240.16384
一路追着win10 从预览版到今天10240.16384 昨晚是中国区第一批下载win10的,不过不是第一批安装的. 早上才安装成功. win10预览版更新 7月29 1024016384 使用esd ...
- 2018-2-13-windows-10预览版升级win10-7月29-10240.16384
title author date CreateTime categories windows 10预览版升级win10 7月29 10240.16384 lindexi 2018-2-13 17:2 ...
- 乘风破浪,Windows11预览版升级和安装,积极准备中的大跃进
安装Windows11 暂时官方还没出可靠的ISO 升级到Windows11 预览版 关于一些限制 目前DEV预览通道对从老系统升级到Windows11暂时没有什么限制,只是会提示你可能不太好,但是安 ...
- [干货来袭]MSSQL Server on Linux预览版安装教程(先帮大家踩坑)
前言 昨天晚上微软爸爸开了全国开发者大会,会上的内容,我就不多说了,园子里面很多.. 我们唐总裁在今年曾今透漏过SQL Server love Linux,果不其然,这次开发者大会上就推出了MSSQL ...
随机推荐
- 如何使用虚拟机下载和安装Centos
首先先下载虚拟机进行安装我这里使用的是 VMware Workstation Player 当前版本为16.这个是免费使用的可以不需要许可证就能长期使用了 官网VMware Workstation P ...
- 【Devexpres】spreadsheetControl设置可见范围
// 获得当前电子表格的工作簿 Worksheet worksheet = spreadsheetControl.ActiveWorksheet; // 获得当前用户数据范围 CellRange us ...
- 记录一次 MyBatis 批量插入的优化-BatchInsert
记录在一次项目问题排查过程中,遇到在数据量大的情况下,向数据库批量插入非常耗时长的问题. 1.分析 首先,代码是在 service 中,采用的是 for 循环调用 insert 语句的方式: for( ...
- CORS与CSRF在Spring Security中的使用
背景 在项目使用了Spring Security之后,很多接口无法访问了,从浏览器的网络调试窗看到的是CORS的报错和403的报错 分析 我们先来看一下CORS是什么,和它很相似的CSRF是什么,在S ...
- C#不提升自己程序的权限实现操作注册表
1. 绪论 当我们编写了自己的C#程序,有程序自定义的文件类型时,通常希望它满足以下需求: 双击自定义文件打开自定义程序 自定义文件有着自己的图标 此时,在网上检索可以发现,大多数回答是使用Micro ...
- Relational Learning with Gated and Attentive Neighbor Aggregator for Few-Shot Knowledge Graph Completion 小样本关系学习论文解读
小样本知识图补全--关系学习.利用三元组的邻域信息,提升模型的关系表示学习,来实现小样本的链接预测.主要应用的思想和模型包括:GAT.TransH.SLTM.Model-Agnostic Meta-L ...
- CBV如何添加装饰器?
目录 一:CBV如何添加装饰器 1.CBV中django不建议直接给类的方法加装饰器 2.CBC添加装饰器的三种方法 3.CBV添加装饰器实战 一:CBV如何添加装饰器 1.CBV中django不建议 ...
- STM32用PWM波控制呼吸灯代码
pwm.c #include "pwm.h" //TIM3-CH3 //PB0 void PWM_Config(void) { GPIO_InitTypeDef GPIO_Init ...
- Nmap安装
Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全审核工具.它被设计用来快速扫描大型网络,包括主机探测与发现.开放的端口情况.操作系统与应用服务指纹识别.WAF识别及 ...
- 微服务项目Git仓库自动化脚本
说明 基于微服务项目,产生的的多项目仓库管理脚本. 目录结构 xxxx Xxx1Api/ Xxx2Api/ git_clone_api.sh git_branch_dev.sh git_pull_al ...