在全面开源的步伐下,微软也逐步跟上了脚步,作为微软最早迈向开源的重要软件之一,.NET 5的发布对微软及其使用者都具有重要意义。
微软未来目标是将所有的 .NET 组件整合到一个产品下,然后用户可以根据需求使用 .NET 的某个部分,而不是单独下载或安装所有内容。
对于Visual Studio用户,需要Visual Studio 16.8或更高的版本才能在Windows上使用.NET 5.0,在MacOS上使用最新版本的Visual Studio for Mac)。Visual Studio Code的C#扩展也已经支持.NET5.0和C#9。
NET 5.0是.NET统一之旅的第一个版本。微软希望 .NET Framework 开发者能够迁移他们的代码和应用到 .NET 5.0 上,为明年发布的 .NET 6.0 将 Xamarin 开发者过渡到统一平台奠定基础。
版本发布时间轴:
.NET Core 3.0 已于2019/09推出
.NET Core 3.1 已于 2019/12推出,为 LTS (Long Term Support,长期支援版),之后.NET Core 将更名.NET,固定每年释出新版,并定义双数版号为LTS版,单数版号为Current版。
.NET 5.0 2020/11
.NET 6.0 LTS 2021/11
.NET 7.0 2022/11
.NET 8.0 LTS 2023/11
如有兴趣,可以体验一下,历来发布资料及地址:https://dotnet.microsoft.com/download/dotnet/5.0
.NET 5.0是.NET Framework和.NET Core核心的结合,旨在统一.NET平台。.NET 5.0毫无疑问代表的是.NET的未来,但是目前国内大部分企业使用的依然是.NET Framework,不过长期来看,升级似乎不可避免。
为了充分论证.NET5的性能,自首个预览版发布以来微软已经进行了广泛的内部部署,除了在 .NET 5.0 上运行.NET网站外,Bing也在使用这个新平台。
并在此次更新中强调了一些比较显著的变化,包括一些性能上的改进。
以下是微软发布的此版本的相关亮点:
1..NET 5.0 已经部署到 http://dot.net和 http://Bing.com 托管数月,已经得到了实战检验。
2.很多组件的性能都得到了极大的提高。.NET 5.0 中 ARM64 的性能 和 GRPC 等都有改善
3.C# 9和F# 5提供了新的语言改进,如C# 9的顶层程序和记录,而F# 5则提供了交互式编程和.NET上功能编程的性能提升。
4..NET库对Json序列化、正则表达式和HTTP(HTTP 1.1、HTTP/2)的性能有所提升。它们现在也被完全注释为可空性。
5.由于GC、分层编译等方面的完善,P95延迟有所下降。
6.应用部署选项更好了,有了ClickOnce客户端应用发布、单文件应用、容器镜像尺寸减小,并增加了Server Core容器镜像。
7.平台范围扩大,增加了WindowsArm64和WebAssembly。
8.一个值得注意的变化是,.NET 5.0应用可以原生运行在ARM64 Windows设备上,消除了仿真带来的一些性能障碍。然而,在这个版本中,Windows 桌面组件并不能用于ARM64设备--这计划在.NET 5.0的服务更新中进行。
近几年.NET Core 的开源项目也非常活跃,随着.net5的发布,这些项目将会逐步整合到.net5及之后的版本中。
但是有几点需要特别注意:
目前的.NET5虽然已经足够强,但严格来说依然属于实现阶段,.NET6.0或许更值得期待。
目前关于.net5的挺多升级并未在实际中讨论,例如正则性能提升,静态正则缓存;Kestrel 的通信性能提升,支持Http3; 证书互转,增强 SSL 通信;readonly struct 在内部的应用;HttpClient 人性化的 Api,支持 webassembly, 支持序列化结果,支持 Quic 等;Json 支持字段序列化,只读类型序列化,Web类型序列化,循环引用序列化等特性;GC 可分配 no zero 的内存空间,分配“固定住”的大堆空间,GCMemoryInfo 等等。
如果并没有急切的需求,目前并不建议升级至5.0,可以将5.0作为研究跳板,在明年微软发布6.0LTS长期维护版本的时候再考虑升级,降低风险。当然,这个需要根据实际情况进行评估。
......
接下来,放一个.NET Core3.1升级.NET5可能遇到的坑,以作参考,不需要的可以略过此部分,作者“dotnet跨平台”。
此前Scott Hunter在博客信誓旦旦.NET Core3.1平滑迁移.NET5,于是当天就去升级我的宝藏项目,结果是大坑没有,小坑不断,折腾了一天时间才搞定,下面来仔细捋一捋,给搭建提供点参考。
背景介绍
升级的项目是之前开源在Github上,也曾一周新增300star,后面虽因故关闭了,但我个人是非常用心的。这不.NET5刚发布,第一时间就开始了升级。
项目是个微信小程序商城,后端是微服务架构支撑的,Ocelot网关+Consul服务注册发现+Core WebApi+gRPC+IdentityServer4都安排上了,整体还是比较复杂的,MongoDB、Redis、RabbitMQ也都安排上了,然后就在.NET Core3.1升级.NET5的过程中,各种踩坑。
VS升级坑
升级的第一个坑来自于VS工具升级!之前.NET5预览版、RC1、RC2都是用的Visual Studio 2019 Preview,这会儿.NET5正式版发现只需要把Visual Studio 2019升级到V16.8即可,然后就兴冲冲的升级去了,结果当头一棒:Visual Studio Installer提示网络未连接无法下载!当然不是我的网络问题,其实是DNS解析上出了毛病(部分用户会遇到,解决办法是把电脑的DNS设置为8.8.8.8即可),但毕竟当时是11号凌晨,以为是微软官方同步不够,我就选择换工具,直接去Linux下用VS Code升级了,然后就开始了第二波环境坑!
经验:如果遇到Visual Studio Installer提示网络未连接无法下载,可以将当前电脑DNS设置为8.8.8.8即可
Linux环境坑
Linux环境下VS Code开发之前都蛮熟悉了,这次想着是升级.NET5,就顺手把Linux系统从CentOS7给换成了CentOS8,然后又华丽丽的各种坑。比如CentOS8中网卡名字从ens33变成了eth0,用nftables替代iptables,各种小变化让人防不胜防,然后docker最新版本的命令也跟之前有些小变化,导致之前整理的Linux+Docker操作笔记各种失灵,来来回回折腾了好几个小时。
当然,环境只是环境,折腾完就过去了,而代码迁移层面的坑才是最麻烦的,因为并不知道还有多少没发现!
.NET5迁移坑坑坑
项目从.NET Core3.1升级到.NET5非常easy,在 global.json 中将SDK版本从3.1升级成5.0,再将TargetFramework从netcoreapp3.1换成net5.0即可。还有部分类库命名空间变化完全没关系,宇宙第一IDE的智能提示轻松解决。但是,在真实项目迁移过程中,我却遇到了各种小问题:
1.Core WebApi框架模板项目中默认集成了swagger,这个是新增的,但之前项目有一些自定义配置和扩展,也导致了冲突。
2.IdentityServer4第三方框架版本升级,API变化很有点多,改动不了不少代码,这个锅虽然不是.NET5的,但也是升级项目会遇到的。
3.尝试C#9花了一些时间,想体验下新语法新特性,如Native ints原生Ints、Pattern matching improvements模式匹配改进版,结果几次把自己绕进去了。
4.项目升级完发现的Bug,DateTime这个天天见的值出现了变化,在 ASP.NET Core 3.1 及更早版本中,DateTime绑定的是服务器本地时间,而5.0之后,DateTime绑定的是UTCTime。
Learun.net
相关推荐
.NET Framework全家桶是一个涵盖.NET Framework开发所需各类工具和库的集合,它包含了从基础类库到开发工具的全面资源。这个压缩包可能包括了不同版本的.NET Framework、开发者工具如Visual Studio、调试器、文档、...
在日常使用中,保持.NET Framework的更新也是很重要的,因为微软会定期发布更新来修复已知的安全漏洞和改进性能。用户可以通过Windows Update或者手动下载安装最新的.NET Framework版本来确保系统的安全性。 总的来...
.NET框架是微软开发的一个全面的开发平台,它包含了执行环境(称为Common Language Runtime,CLR)和一套丰富的类库,为开发者提供了构建各种类型的应用程序的基础设施。.NET框架允许使用多种编程语言,如C#、VB.NET...
【ASP.NET编程知识】IIS部署ASP.NET5的实现步骤主要涵盖了如何在Windows Server环境下,利用IIS服务器来部署和管理ASP.NET Core应用程序。本文档适用于熟悉.NET开发,特别是对ASP.NET Core 5有一定了解的开发者,...
微软技术路线图,自己找了很久。看完之后,大概对微软.NET技术平台有个印象。
精通ASP.NET MVC 5.pdf
这个安装文件可能包含的是.NET框架的无接触部署(No-Touch Deployment)的教程,这是一种简化应用程序部署的方式,用户无需安装.NET框架即可运行.NET应用程序。 3. **VB.NET - Data Access - Data Entry Form**: ...
总之,这个ASP.NET新闻发系统展示了如何利用.NET平台的强大功能来实现一个功能完善的新闻发布平台,其三层架构的设计使得系统易于维护和升级,而使用VS2010和SQL Server 2008则保证了开发效率和数据安全。
微软ASP.NET入门教程 .DOC文档(解压后13M,可直接打印,共300页) 入门 介绍 什么是 ASP.NET? 语言支持 ASP.NET Web 窗体 Web 窗体介绍 使用服务器控件 对控件应用样式 服务器控件窗体验证 Web 窗体用户...
这个“ASP.NET 新闻发布网站系统”是一个基于该框架构建的典型应用实例,它集成了管理员登录、新闻编辑以及管理功能,如新闻的增删改查。 首先,我们要了解ASP.NET的核心特性。ASP.NET提供了丰富的服务器控件,可以...
标题中的“微软新推出的ASP.NET专用”指的是微软公司发布的一款专为ASP.NET框架设计的编程工具。ASP.NET是微软开发的一个用于构建Web应用程序的框架,它简化了Web开发过程,提供了丰富的功能和高效的性能。这款新的...
总之,这个微软.NET程序员高级培训教程资料是一份全面的学习资源,无论你是.NET新手还是经验丰富的开发者,都可以从中获取到有价值的知识,提升自己的专业技能,更好地适应不断变化的IT行业需求。通过深入学习并实践...
ASP.NET MVC 5框架是微软ASP.NET Web平台的新进展。它提供了高生产率的编程模型,结合ASP.NET的全部优势,使代码架构更整洁,可进行测试驱动开发,并使程序有强大的可扩展性。 通过本书你将学到: 获得对ASP.NET MVC...
ASP.NET MVC 5 - 添加一个模型 6. ASP.NET MVC 5 - 创建连接字符串并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8. ASP.NET MVC 5 - 验证编辑方法和编辑视图 9. ASP.NET MVC 5 - 给电影表和...
1. **.NET 2.0**:这是.NET Framework的一个早期版本,发布于2005年。尽管描述中提到的.dll文件可能标记为.net3.5,但它们实际上是为.net2.0设计的,这意味着即使在较旧的.NET环境中,你也可以使用Newtonsoft.Json...
微软发布.Net Framework 3.5下的 Chart 控件是.NET 平台下的一个重要补充,旨在弥补.NET 平台下缺乏一个强力的图表控件的不足。该控件的发布标志着.NET 平台下的图表控件发展进入了一个新的阶段。 在.Net Framework...
描述中的内容与标题相同,进一步强调了这是一个专门针对微软.NET程序员的高级培训教程,特别是使用VB.NET编程语言。这意味着教程内容将深入到.NET框架的核心特性,以及VB.NET语言的高级用法。 【标签解析】 1. ...
微软.NET性能测试(英文版)
这个框架版本在2005年发布,是.NET Framework系列的一个重要里程碑,引入了许多新特性和性能优化。 .NET Framework 2.0的核心组成部分包括公共语言运行时(CLR)和类库。CLR是.NET Framework的基础,它负责执行应用...
.NET 6项目部署到IIS(Internet Information Services)是一个关键的步骤,对于任何希望在Windows服务器上运行.NET应用程序的企业或开发者来说,都是必备技能。IIS是微软提供的一款强大的Web服务器,可以承载多种...