微软于. NET 8第三预览版中,在 ASP.NET Core加入原生AOT(Ahead-Of-Time)的支持,供开发者将代码编译成为原生码,生成自封式(Self-Contained)ASP.NET Core应用程序。 官方提到,这项新功能的发展初期,会先专注于支持云原生API应用程序。
ASP.NET Core是一个以.NET架构为基础的网页应用程序跨平台开发框架,由于 ASP.NET Core相依于.NET,因此原本 ASP.NET Core就可以用到AOT编译,但是支持重点主要还是在提升效能和可扩展性上,整体支持并不完整。
而.NET 8第三预览版在 ASP.NET Core加入原生AOT,使得 ASP.NET Core能够获得更完整的AOT优势。 使用原生AOT编译的应用程序,可减少磁盘空间使用,原生AOT应用程序会生成一个可执行文件,其中包含应用程序和所需的外部相依项目代码子集,而这个优点会让容器映像文件更小,进而缩短部署的时间。

由于AOT程序码不再需要JIT编译,也就可以缩短程序启动时间,应用程序可以更快处理请求,容器调度效能将获得改善,不同版本的应用程序转换更顺畅。 原生AOT代码还能够减少内存需求,让应用部署密度提高,并且改善可扩展性。
针对需要部署多个执行个体的工作负载,像是云端基础设施和超大规模服务,ASP.NET Core 原生AOT的支持将带来更为明显的好处。 经官方测试,将应用以原生AOT编译,启动时间可减少达80%,应用程序的大小也可减少了87%。
不过,并非所有 ASP.NET Core的功能都与原生AOT兼容,部分开发者常用的函式库也可能不支持原生AOT。 ASP.NET Core的原生AOT限制主要在反射(Reflection)和动态代码生成相关部分,虽然原生AOT支持型别信息的反射,但执行时可能会发生一些问题,因为AOT编译中的树型剪裁,无法静态确定特定型别的成员是否通过反射存取,因此可能使这些成员被移除,在执行时发生问题,开发者需要特别标记动态存取的成员,才能避免成员被移除。
微软提醒,代码仰赖反射执行时代码生成并非总是很明显,因此开发者应该要仔细检查代码,避免意外地将原生AOT用于不兼容之处。
除此之外,这个预览版还加入了一个值得注意的功能,便是Blazor元件的服务器端渲染(Server-Side Rendering,SSR),微软让开发者可以使用Blazor元件建置服务器端渲染的用户界面,以提升客户端的互动性。 ASP.NET Core 原本就已经支持MVC和Razor Pages 进行服务器端渲染,但是这些框架,缺乏可重用的网页用户界面组件,而 Blazor 刚好可以弥补这个不足。
服务器端预览是指让服务器在收到请求时生成HTML,优点是加载速度快,因为用户界面的渲染工作在服务器上已经完成,客户端便不需要下载大量的JavaScript套件。 而微软在Blazor器件加入服务器端渲染,也就进一步使Blazor能够同时满足客户端和服务器端等,所有网页用户界面的需求。 这项功能仍在早期预览阶段,在功能上还有许多限制。