微软发布.NET 8第一个预览版,这个版本将是下一个.NET长期支持版本,预计会在11月的.NET大会上正式发布。.NET 8第一个预览版使得NativeAOT编译更高效率,提升云计算开发体验,并且改进Linux支持。
微软针对控制台应用程序,在.NET 7中加入NativeAOT,微软提到,AOT(Ahead-of-Time)编译是.NET的一个重要功能,因为可以大幅提升.NET应用程序的性能。开发者可以使用NativeAOT创建完全自包含的应用程序版本,如此应用程序就不需要使用独立的Runtime,所有需要的组件都包含在单一文件中,这个文件的大小在.NET 8缩减,Linux版本的大小甚至可以较之前减少达50%。
以Hello, World应用程序为例,.NET 7的NativeAOT自包含应用程序,Linux x64版本为3.76 MB,而Windows x64为2.85 MB,在.NET 8第一预览版的大小分别为1.84 MB和1.77 MB。
微软发展.NET的目标之一,是要成为更为友善的云计算开发平台和工具,为此.NET 8也改进了容器镜像文件体验。.NET让开发人员可以使用容器镜像文件,以轻量级且可移植的格式打包应用程序,方便将应用程序部署到云中。
在.NET 8第一预览版中,容器默认Linux发行版更新为Debian 12,并且使用非根用户执行容器镜像文件,微软提到,虽然容器基础镜像文件几乎都是配置成以根用户执行,不过该配置通常被沿用到生产中,并非是个好方法,但是要对每一个应用程序配置不同的用户又很麻烦,而且容器镜像文件并没有提供适合容器工作负载的非根用户。
因此微软在.NET 8的新做法,默认对所有容器镜像文件以非根用户执行,以提高安全性,并将默认连接端口从80改变成为8080。
微软也在.NET 8强化对Linux的支持,开发者现在可以在Linux上,直接从dotnet/dotnet存储库中构建.NET,这与红帽(Red Hat)和Canonical用来构建.NET的方法一样,使用dotnet/source-build来构建.NET Runtime、工具和SDK,微软之后还会支持MacOS和Windows。
微软提到,过去Linux虽然也可以从源码构建.NET,但是需要从dotnet/installer的提交中创建一个源码压缩文件,来对应每一个版本,但现在已经不需要如此,存储库中就有每一个版本相对应的标签。
微软也发布了带有.NET 8的小型同捆镜像文件Chiseled Ubuntu,这个版本Ubuntu文件容量非常小,能够大幅减少攻击面,且没有组件管理器和shell,且使用非根用户权限,因此能够减少多种类型的攻击。