【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

押注.NET 是件好事

  • 2022-07-12
  • 本文字数:2729 字

    阅读完需:约 9 分钟

押注.NET是件好事

作为一个在.NET 上构建了不止一个流行平台的人,我经常被问到它的相关性,以及它是不是一个值得投入的生态系统。这个问题在旧金山湾区的技术世界里尤为流行,这里的技术潮流就像四季一样变更交替,但.NET 始终是一个坚定、持续流行的平台。而在我看来,它还是最具整体生产力、最令人愉快和最易访问的平台。


这个世界上确实还有其他很棒的编程语言,比如 Rust;还有其他很棒的 App UX 平台,比如 Flutter。但说到全面的生产力和优雅,可能没有能与.NET 一较高下的了。


今天的.NET 已经不是老一辈的.NET 了,在一年一度的 StackOverflow 开发者调查中,它连续 3 年成为最受喜爱的平台,这是有原因的。事实上,.NET Framework 和新.NET Core 的结合远远超过了其他所有东西。甚至可以说,在这些问卷调查的所有框架当中,.NET 体现了最强烈的爱与恐惧的正面情绪。



为了理解为什么开发者如此热爱.NET,让我们全面考察一下.NET 的开发者体验。


一流的工具


首先是工具。Windows 和 Mac 的 Visual Studio 为.NET 提供了一流的支持,VS Code 也为其提供了有限的支持(微软的一个疏忽,我们将在下面讨论)。它们代表了世界上使用率最高的 IDE,事实上,VS Code 是 IDE 的绝对统治者,使用人数是 Visual Studio(位居第二)的两倍多。



JetBrains Rider 被许多人认为是现有最好的 IDE,它不仅与 Visual Studio 一样为.NET 提供支持,而且在此基础上进行了相当大的改进,带来了可能是所有工具中最好的.NET 工具体验。


工具本身是基于底层的平台功能(如健壮的一键式构建和部署系统)而构建的,提供了轻松的首次运行体验,开发者能够在几分钟内完成从平台安装到应用程序部署的过程。事实上,无需纠缠于复杂的工具链、构建文件或平台版本控制就能从零开始使用.NET 来部署应用程序,这种能力已经为其他平台树立了标准,并提升了开发者对平台的忠诚度。


随处运行


就像 20 世纪 90 年代的 Java 梦一样,.NET 也运行在所有的主流平台上,并拥有定制的集成工具来充分利用每一个平台。虽然它最初被锁定在 Windows 上,但在今天,它已经可以运行在 Windows、macOS、iOS、Android、Linux、大型机甚至微控制器上。它也运行在云端,Azure、AWS 和谷歌云都提供了内置的.NET 应用程序支持。


一系列优雅的编程语言


公共语言运行时(CLR)是.NET 的一个核心特性,开发者可以使用超过 25 种语言编写应用程序,包括 C#和 F#——世界上最好的两种编程语言,以及 VB.NET——虽然人们喜欢调侃它,但它本身确实非常强大。


强大的社区和开发者


根据具体的计算方式,活跃的开发者数量在 200 万到 250 万之间。而根据我们自己的研究,世界上将近一半的活跃开发者知道或者正在用.NET。


自.NET 诞生以来,开发者生态系统每年都在增长。因此,在难以招到开发人员的时候,你可以放心,.NET 是最大的开发人才库之一。


它还在快速增长。最新的 TIOBE 编程语言指数显示,在过去的一年中,C#的受欢迎程度增长最快,有望进入前三,取代 C 语言。事实上,如果与 VB.NET 一起,它将轻松位居榜首。


技术之美


2016 年的.NET Core 重构对.NET 进行了彻底的改造,提供了一种现代的、轻量级的、可组合的、点菜式的方式,直接通过 Nuget 从它的现代包生态系统中获取必要的平台库。它放弃了传统的 Win32 平台连接,融合了 Mono 和 Xamarin 团队在运行时和工具上带来的创新,为真正的跨平台体验铺平了道路。


.NET Core 也带来了更好的性能。通过打破旧有.NET Framework 运行时的限制,微软带来了一系列性能改进。


说到性能,Xamarin 的预先编译器(现在已被纳入.NET)让开发人员可以直接在构建时为特定芯片架构的汇编代码编译出二进制文件,从而在内存托管的应用程序中实现原生的 C/C++性能。


这种内在的内存托管方式也为可靠性和安全性带来了好处。从可靠性角度来看,它实际上消除了非托管应用程序(如用 C/C++编写的应用程序)中常见的内存泄漏所造成的不稳定和崩溃。从安全性角度来看,内存托管平台的安全性消除了由内存使用引起的一系列安全问题,谷歌的安全数据显示,内存使用引起的 Bug 大约占所有非托管安全性的三分之二。


百分百开源


.NET 的所有东西都是开源的,可以免费使用,包括类库、运行时、编译器、编程语言和应用程序框架。你可以在 GitHub 上的DotNet存储库中找到所有的源代码。


一流的生态系统


除了微软的投入之外,第三方生态系统也非常庞大,拥有大量高质量的库、插件、工具和框架。


下面列出了几个非常引人注目的第三方集成的例子:


  • Uno PlatformAvalonia——两个成熟的 MAUI 替代解决方案,Uno Platform 和 Avalonia 提供了一个优雅的、令人愉快的、高性能、跨平台 UX 框架。

  • Meadow——由 Wilderness Labs 开发,可以用它为运行在微控制器上的.NET 构建物联网解决方案。

  • Telerik——几乎在任何平台上都可以使用的可插拔 UI 控件。


还有其他无数的咨询公司、解决方案提供商和.NET 商店,它们都获得了构建.NET 解决方案的认证和资格。


受企业信任


众所周知,.NET 是企业的中流砥竿,虽然微软没有公开发布.NET 的采用情况,但有 95%的财富 500 强企业都在使用 Azure。而且,我私下里也被告知,至少 80%的财富 500 强企业在使用.NET,但实际数字可能更高,因为遥测技术经常会被关闭。



.NET 尤其适用于关键任务型应用程序,在这些应用程序中,.NET 的可靠性和久经考验的运行时让人心情舒畅。事实上,美国国防部在广泛使用.NET。


它并不完美


尽管.NET 有这些神奇之处,但它并不完美。我要指出的是,尽管微软用它提供了这么多好东西,但它也有缺点。其中,大部分直接归因于微软内部优先级的转变,以及领导团队一直在艰难地跟上一线的开发者文化。


MAUI 是微软的旗舰跨平台 UI 库,Xamarin 的继承者,同时也结合了之前的 Windows UI 框架 WPF,但长期以来资金不足,这使得 Flutter 成为当今最好的跨平台 UX 平台。在 Linux 平台上尤其如此,因为 Linux 目前还不支持 MAUI。


同样是这些领导团队,他们有时候也错误地处理了与社区的关系,缺失方向感的.NET 基金会和 Hot-Reload 的惨败就足以证明。


优先级转变也可能是限制为 VS Code 提供支持的原因,虽然有了基本的.NET 支持,但仍然缺少适当的插件来处理.NET 的多项目解决方案格式,而这对于支持更复杂的项目来说是必要的。这是由于微软一直以来优先将.NET 开发者引向 Visual Studio 的销售,以此来实现变现,而不是为他们提供免费的 VS Code。


话虽如此,很明显,微软内部的优先级正在转移到提供更好的跨平台工具支持上,而且我听说一个完整的 VS Code 解决方案正在进行当中。


结束语


然而,即使有一些小缺点,.NET 仍然可以轻松地成为世界上最高效、最值得信赖的开发者平台生态系统。没有什么比.NET 更完整、更开放、更高效的平台了。


所有迹象表明,在可预见的未来,.NET 将继续保持这种态势,因为它将继续发展,团队和生态系统将继续创新。因此,把赌注押在.NET 上是件好事!


原文链接:


https://medium.com/@bryancostanich/its-good-to-bet-on-net-c22853f501c7

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2022-07-12 10:422786

评论 4 条评论

发布
用户头像
写起来很舒服,用visual studio code 开发也不错
2022-07-19 09:18
回复
用户头像
写起来很舒服,用visual studio code 开发也不错
2022-07-19 09:18
回复
用户头像
一看就是国外的文章了,国内都是无脑上Java的
2022-07-13 13:40
回复
用户头像
看起来不错,但是还是用OpenJDK。
2022-07-12 18:20
回复
没有更多了
发现更多内容

电商秒杀系统

张逃逃

架构实战营 毕业总结

tom

学生管理系统(4)

5月月更

毕业总结

张逃逃

电商秒杀系统设计

tom

毕业总结

Geek_ec866b

架构实战营

微信业务架构图 & 学生管理系统架构设计

Roy

架构训练营

毕业总结

浪飞

交付项目中QA的思辨悟

刘冉

敏捷测试

姚前:美联储数字货币原型系统简析

CECBC

Linux Troubleshooting 超实用系列 - Disk Analysis

大卡尔

Linux trouble shooting

FFmpeg介绍

Loken

音视频 5月月更

毕业设计—电商秒杀系统

Leo

druid 源码阅读(六)Druid SqlParser介绍

爱晒太阳的大白

5月月更

安谋科技结束纷争,看新管理团队如何开启新阶段?

Geek_2d6073

在线TSV转YAML工具

入门小站

工具

架构训练营总结

随欣所遇

架构训练营5期

模块九

blazar

「架构实战营」

Excel 操作篇:应用 RFM 模型客户分群,提效客户体验管理

龙国富

客户体验 RFM 客户分群

一步一步教你制作的第一个 WordPress 插件

海拥(haiyong.site)

WordPress 5月月更

如何使用极限网关无缝集成 LDAP 的介绍

极限实验室

elasticsearch Gateway ldap infini 极限网关

系统强化工具 AppArmor

baiyutang

Linux Kubernetes k8s 5月月更 apparmor

百万电商秒杀架构设计

随欣所遇

架构训练营5期

ArrayList源码分析-新增&扩容

zarmnosaj

5月月更

电商秒杀系统架构设计

浪飞

设计模式之桥接模式

乌龟哥哥

5月月更

毕业总结

Leo

爬虫逆向之Mytoken,技巧+经验快速解决JS机密算法

梦想橡皮擦

5月月更

毕业设计

Geek_ec866b

架构实战营

Go 语言入门很简单:Go 语言执行Shell命令

宇宙之一粟

命令行 Go 语言 5月月更

毕业设计

Mr小公熊

押注.NET是件好事_语言 & 开发_Bryan Costanich_InfoQ精选文章