.NET 是信息技术应用创新产业重要参与者 (2)

我对所有参与社区建设的人都充满敬意,也鼓励各位.NET开发者积极融入社区,去了解、参与甚至创造.NET开源项目,请不要在社区里充满了嘲讽、不屑和鄙夷(经常可以在微信群,QQ群,博客评论里见到这种言论)。 不要抱怨社区没有什么,而是想想能为社区做什么。等到.NET社区充满了战斗力,受益的最终还是整个开发群体。

image

这几年.NET社区得到了很大的发展,还是有赖于.NET 本身的技术发展,.NET技术方面的优化和升级,也是.NET发展的强劲动力,很多人在谈到.NET Core相对于.NET Framework的优点时,第一时间想到的是开源跨平台。其实跨平台只是起点而非目的。.NET Core的更大的意义在于性能的提升,以及保持与时俱进的设计甚至引领潮流。 即将在2020 dotnet conf 上发布的.NET 5 将支持所有 .NET 应用程序类型:Xamarin、ASP.NET、IoT 和桌面,将利用一个单独的基类库 (BCL)、两个独立的运行时(MonoCLR和CoreCLR,因为很难将两个截然不同的运行时单独作为源)和一个工具链(比如 dotnet CLI),结果将是行为、API 和开发人员体验之间的一致性。 .NET 的统一有很多优点。将框架、运行时和开发人员工具集统一到一个代码库中,将减少开发人员(Microsoft 和社区)需要维护和扩展的重复代码量。

image

并且所有 .NET 5 源代码都将是开放源代码,所有人都能见证和参与其中,这让全球真心热爱这个平台或C#语言的有志之士有了一个集中的交流地,也极大的促进了国内.NET的发展,这些年虽然缺少了微软中国的布道支持,国内的.NET开源社区一样发展的不错,如果有微软中国的资源投入支持,相信这个结果会更好。

性能的提升直接使得很多人开始关注和学习.NET 带来的优化,例如基础库中相当多的线程安全的静态方法被优化和重写,大幅减少竞争资源的损耗;推出性能极佳的System.Text.Json基础库替代包袱沉重的Json.NET, 还有更底层的Span<T>/Memory<T>, ref struct 等的引入,让C#在高效生产力的条件下拥有C/C++的性能。从C# 7.0开始一路完善的模式匹配(当然还是有很多人对这些新特性不是很满意),以及Range/Index的切片语法等等,这些都使得基于.NET的编程体验更上一层楼。在设计上引领潮流方面来说,以ASP.NET Core最为典型---依赖注入无处不在,认证、授权、日志、配置、中间件等模块都非常值得学习,对Docker,云服务、微服务、IOT、ML等支持和持续优化,也使得.NET/C#在较前沿的工程领域占有一席之地,特别是基于WebAssembly技术的Blazor框架在前后端分离的前端框架上也是引领潮流的。

回顾自2014年以来的.NET 的开源发展路程,一路发展也不是一帆风顺的,中间也有不少批评和困扰。例如在.NET Core 2.1的HttpClient 出现了一些严重的性能问题,使得很多开发者怨声载道,EF Core 3.0 不再默认使用客户端评估(https://docs.microsoft.com/zh-cn/ef/core/querying/client-eval)这样的一个较大的破坏性更新,让开发者在升级项目的数据访问层代码时遭遇打击。.NET的版本升级现在也是很快,这里强烈建议大火把项目升级到当前最新的LTS版本,以后的升级尽量避免隔代升级,比如即将到来的.NET,从3.1升级上去会比较顺滑,这里特别要提醒的是别以为.NET 4.8也可以顺滑的升级到.NET 5。 这些发展道路上的问题确实也打击了部分开发者的耐心和信心,以至于他们在当时不得不额外花费时间,承受进度压力处理问题的时候,对.NET的评论极其负面。这同时也阻挠了相当一部分人将.NET Framework项目迁移到.NET Core或升级旧版本.NET Core的信心,随着.NET Core/Framework,新旧版本之间的差距越来越大,最终造成了恶性循环,项目的老化积重难返,想找到靠谱的人维护也变得逐渐困难。

但是从总体上来说,这些年.NET的在技术发展上取得的成绩是值得欣喜的,它走出的每一步都是让.NET继续焕发青春,接下来几年时间里也是国家信息技术应用创新产业发展的黄金时间,一个完全开放的.NET生态会是这里非常重要的参与者。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxwzx.html