乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 桌面WPF应用从.Net 6.0升级到.Net 8.0
关于.Net 8
在.NET Conf 2023大会上微软官宣了.Net 8
迄今为止最快.Net
.NET8在整个堆栈中带来了数千项性能改进。默认情况下会启用一种名为动态配置文件引导优化(PGO)的新代码生成器,它可以根据实际使用情况优化您的代码,并且可以将应用程序的性能提高最多20%。现在支持的AVX-512指令集使您能够对512位数据向量执行并行操作,这意味着您可以在更短的时间内处理更多的数据。原始类型(数字及其他类型)现在实现了新的可格式化和可解析接口,这使它们能够直接格式化和解析为UTF-8,而无需任何转码开销。
从.NET8的最新Tech Empower基准测试中,我们看到JSON API场景改进了18%,ASP.NETCore Minimal API每秒可处理近一百万个请求。
Fortunes场景更接近实际工作负载,包括数据库访问和服务器端HTML渲染。在这个测试中,我们看到ASP.NET Core的性能提升了24%,现在每秒处理的请求数超过300K。
弹性云原生堆栈.NET Aspire
.NET Aspire是一个使用.NET构建弹性、可观察和可配置的云原生应用程序的堆栈。它包括一组针对云原生而增强的精选组件,默认情况下包括遥测、弹性、配置和运行状况检查。 .NET Aspire结合了先进而简单的本机开发人员体验,使您不管在刚开始还是使用了100天都能轻松发现、获取和配置云原生应用程序的基本依赖项。.NET Aspire的第一个预览版现已发布。
https://learn.microsoft.com/zh-cn/dotnet/aspire/get-started/aspire-overview
更强的容器支持
使用.NET容器打包您的应用程序比以往更轻松、更安全。每个.NET映像都包含一个非root用户,从而通过单行配置启用更安全的容器。.NET SDK工具无需Dockerfile即可发布容器映像,并且默认情况下是非root的。由于.NET基础映像更小,因此可以更快地部署容器化应用程序–包括我们映像的新实验变体,这些变体可为本机AOT提供真正最小的应用程序。选择使用新的Chiseled Ubuntu映像变体进行更多安全强化,以进一步减少攻击面。使用Dockerfile或SDK工具,为任何架构构建应用程序和容器映像。
更高密度可持续计算的本机AOT
将您的.NET应用程序编译为本机代码,使用更少的内存并立即启动。无需等待JIT(即时)编译器在运行时编译代码。无需部署JIT编译器和IL代码。AOT应用程序只部署应用程序所需的代码。您的应用程序现在可以在无法使用JIT编译器的受限环境中运行。
开箱即用的AI人工智能
生成式人工智能和大型语言模型正在改变人工智能领域,使开发人员能够在其应用程序中创建独特的人工智能体验。.NET 8通过.NET SDK中一流的开箱即用AI功能以及与多种工具的无缝集成,使您可以轻松利用AI。
.NET 8为System.Numerics库带来了多项增强功能,以提高其与生成式AI工作负载的兼容性,例如集成 Tensor Primitive。随着人工智能应用程序的兴起,涌现出了新的工具和SDK。我们与众多内部和外部合作伙伴合作,例如Azure OpenAI、Azure Cognitive Search、Milvus、Qdrant和Microsoft Teams,以确保.NET开发人员可以通过各自的SDK轻松访问各种AI模型、服务和平台。此外,开源Semantic Kernel SDK简化了这些AI组件与新的和现有应用程序的集成,以帮助您提供创新的用户体验。
发布节奏
从这个图来看,还在使用.Net 6的童靴也要着手升级到.Net 8了,因为.Net 6将于2024年11月12日停止支持了。
检查SDK版本
前往本地终端里面,输入
dotnet --list-sdks
即可查阅到已安装的SDK版本
已安装运行时的版本也可以一起查到
dotnet --list-runtimes
获取.Net 8
有意思的是,微软这个页面就是由最新的.Net 8支持的
直接X64安装包
Winget安装
速度有点蜗牛~
winget install Microsoft.DotNet.SDK.8
单独安装桌面运行时
winget install Microsoft.DotNet.DesktopRuntime.8
单独安装.NET运行时
winget install Microsoft.DotNet.Runtime.8
单独安装ASP.NET Core 运行时
winget install Microsoft.DotNet.AspNetCore.8
尝鲜桌面运行时预览版
winget install Microsoft.DotNet.DesktopRuntime.Preview
创建.Net 8项目
框架这里选.Net 8.0(长期支持)
即可
老项目升级到.Net 8
如果是旧解决方案当前处于.Net 6,建议使用VsCode打开整个解决方案,我们根据TargetFramework做个整体替换即可。
将<TargetFramework>net6.0</TargetFramework>
搜索替换成<TargetFramework>net8.0</TargetFramework>
最好选上全词匹配和大小写匹配,以便操作失误。
重新回到解决方案,全部重新编译即可
如果解决里面还有面向.Net 6的子集目标框架,还需要进一步替换,比如
将<TargetFramework>net6.0-windows</TargetFramework>
搜索替换成<TargetFramework>net8.0-windows</TargetFramework>
这一次,全部重新生成通过,完美
运行之后一切正常,好像是感觉速度快了一些。
其他应用升级
Docker
.NET容器映像中配置的默认ASP.NET Core端口已从端口80
更新为8080
。
添加了新的ASPNETCORE_HTTP_PORTS
环境变量,作为ASPNETCORE_URLS
的更简单的替代方法