.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 ...
随机推荐
- HTTP Analyzer 伴侣,解决Probably another instance is already up
解决方案1: NET START HttpAnalyzer_StdV7_NetFilter START start HttpAnalyzerStdV7.exe将以上内容保存为.bat 解决方案2: p ...
- combotree 的简单使用2
上一次我在 combotree 的简单使用 中介绍了一种combotree的写法,不过有一个缺点,就是当输的结构非常大的时候,分级较多时,消耗内存的现象会比较严重,下面介绍的一种方法,使combotr ...
- log4j漏洞原理
一.前置知识 1.JNDI接口 JNDI即Java Naming and Directory Interface(JAVA命名和目录接口),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发 ...
- 使用JavaScript制作一个页面的电子时钟
题目:做一个电子时钟,显示当前的年月日,时分秒,要求自动变化. 案例分析: 1.使用一个div盒子来展示时钟的内容: 2.将盒子在JavaScrip里面获取div盒子: 3.我们需要一个定时器setI ...
- css样式实现平行四边形
强大的css样式实现平行四边形: 啥也不说了,直接上代码 <!DOCTYPE html> <html lang="en"> <head> < ...
- C++进阶(unordered_set+unordered_map模拟实现)
unordered_set unordered_set是以无特定顺序存储唯一元素的容器,并且允许根据它们的值快速检索单个元素,是一种K模型. 在unordered_set中,元素的值同时是它的key, ...
- 【转载】七个人生工具,终生受益 | SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
人类历史原本就是一部追求自身平衡的奋斗史,本文介绍七个人生工具:SWOT.PDCA.6W2H.SMART.WBS.时间管理.二八原则 . 1.SWOT分析法 Strengths:优势 Weakness ...
- APICloud 平台常用技术点汇总讲解
平台介绍: 使用 APICloud 可以开发移动APP.小程序.html5 网页应用.如果要实现编写一套代码编译为多端应用(移动APP.小程序.html5 ),需使用 avm.js 框架进行开 ...
- 【kubernetes入门到精通】Kubernetes的健康监测机制以及常见ExitCode问题分析「探索篇」
kubernetes进行Killed我们服务的问题背景 无论是在微服务体系还是云原生体系的开发迭代过程中,通常都会以Kubernetes进行容器化部署,但是这也往往带来了很多意外的场景和情况.例如,虽 ...
- iOS开发小结 - 通过PUT请求上传数据
一般服务器上传数据一般都是用POST请求,这样通过AFNetworking的POST请求稳稳的,但是有一天遇到一个问题,服务器上传数据用的是PUT请求,发现用AFNetworking并不是那么好用,今 ...