押注.NET 是件好事

作者 | Bryan Costanich

译者 | 明知山

策划 | 褚杏娟

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

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

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

8dc8296dfb215007950362eb0bfefd97.png

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

一流的工具

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

850879ec2e59d0cf4c146fcb6baf196a.png

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 大约占所有非托管安全性的三分之二。

百分百开源

2b448a61cbf1f04021c7b27f482c1617.png

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

一流的生态系统

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

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

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

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

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

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

受企业信任

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

d9c82c8f25617b4b07b9e52173c2fc6d.png

.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

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8-12 canvas专题-阶段练习一(上)

8-12 canvas专题-阶段练习一&#xff08;上&#xff09; 1 <!DOCTYPE html>2 <html lang"zh-cn">3 <head>4 <meta charset"UTF-8">5 <title>8-12 课堂演示</title>6 </head>7 <style type"text…

【QGIS入门实战精品教程】2.2:QGIS软件的下载与安装(Windows)

文章目录 一、QGIS下载二、QGIS安装​一、QGIS下载 QGIS软件官网下载地址:https://www.qgis.org/en/site/ 进入官网之后,点击【Download Now】进入下载页面: 选择对应的版本进行下载: 开始下载:

Linux sudo找不到命令:修改sudo的PATH路径

为什么80%的码农都做不了架构师&#xff1f;>>> sudo有时候会出现找不到命令&#xff0c;而明明PATH路径下包含该命令&#xff0c;让人疑惑。其实出现这种情况的原因&#xff0c;主要是因为当 sudo以管理权限执行命令的时候&#xff0c;linux将PATH环境变量进行了重…

快速判断站点是否存活的 3 种编程实现

前言如何知道外部站点是否正在运行&#xff1f;如果使用浏览器&#xff0c;直接访问对应站点即可。那么&#xff0c;使用 C# 以编程方式&#xff0c;如何实现呢&#xff1f;GET 请求首先想到的&#xff0c;就是使用 HttpClient 向该站点发送 HTTP 请求&#xff0c;并检查返回状…

【数据结构与算法】拓扑排序问题C语言实现

拓扑排序是有向无环图的一种应用,在实际生活中用的很多。 比如GIS专业的课程设计,许多课程需要前置课程要求,也就是说没上过A课程、则不可能直接去学B课程,画个图表就是: 同理,我们教材中的范例:穿衣服的过程也是一个拓扑排序问题,如下表: 有关这个拓扑排序的模型构造…

[转]2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!

△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 287 篇原创分享 作者 l Hollis 来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09; SpringBoot一直是开发者比较青睐的一款轻量级框架&#xff0c;他不仅继承了Spring框架原有的优秀特性&#xff0c;而…

C# 搭建一个基于.NET5的WPF入门项目

概述.NET5 发布已经有一阵子了&#xff0c;今天抽空体验一哈&#xff0c;搭建一个WPF项目实例&#xff0c;看看和传统的.NET Framework有什么区别&#xff01;开发环境&#xff1a;VS2019 WPF框架&#xff1a;Caliburn.Micro 版本4.0.173.NET版本&#xff1a;.NET5.0项目创建步…

五个最佳案例带你解读 Node.js 的前后之道

Node.js 是什么&#xff1f; Node.js 采用 C语言编写而成&#xff0c;浏览器内核 V8 做为执行引擎&#xff1b; Node 不是 JS 应用、而是一个 Javascript 的运行环境。 Node 保留了前端浏览器 js 的接口&#xff0c;没有改写语言本身的任何特性&#xff0c;依旧基于作用域和原型…

【ArcGIS风暴】根据海拔范围分级统计GIMMS 3g NDVI平均值案例教程——以甘肃省为例

在论文写作时,通常要根据区域进行统计栅格数据。本文以甘肃省dem、NDVI数据为例,讲解根据海拔范围分级统计NDVI平均值、最大值、最小值和面积等。 1. 海拔分类 dem是本案例的最基本数据,打开ArcMap,加载dem数据,如下图所示: 首先要对dem进行分级,所使用的到的工具是重分…

【转】知道这20个正则表达式,能让你少写1,000行代码

正则表达式&#xff0c;一个十分古老而又强大的文本处理工具&#xff0c;仅仅用一段非常简短的表达式语句&#xff0c;便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话&#xff0c;能够使你的开发效率得到极大的提升。下面是技匠整理的&#xff0c;在前端开发…

Dapr中国社区网站(预览版)发布!

点击蓝字关注我们社区介绍Dapr 是一个可移植的、事件驱动的运行时&#xff0c;它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序&#xff0c;并可运行在云平台或边缘计算中。Dapr 中国社区是一个以 Dapr 为中心的中立而开放的技术社区&#xff0c;为 Dapr 用户…

【ArcGIS风暴】ArcGIS自动生成标识码(BSM)的两种方法案例教程

1. 标识码编制规则 按照每个图层要素的标识码应具有唯一代码的基本要求,根据《GB/T 7027-2002 信息分类和编码的基本原则与方法》规定的信息分类原则和方法,要素标识码采用二层 20 位层次码结构,由村级行政区划代码、要素标识码顺序号构成。具体如下: (1)第一层为村级行…

数据分析入门_char01

数据分析入门_char01 转载于:https://www.cnblogs.com/zsr0401/p/6370697.html

【BIM入门实战】Revit2018项目模板、族库图文安装教程

【扩展阅读】:【MIB】Win11平台上Revit 2018_x64简体中文版图文安装与卸载完整教程 一、Revit 族库、项目样板缺失的产生原因 1、断网或者网络不稳定环境下安装Revit。 2、Revit配置安装界面中取消勾选“Autodesk Revit Content Librabries”。 3、下载了没有自带族库的软件…

一台服务部署多个tomcat注意事项

第一步 添加tomcat环境变量 # vim /etc/profile加入下代码 # TOMCAT ATALINA_BASE/usr/local/tomcat8CATALINA_HOME/usr/local/tomcat8TOMCAT_HOME/usr/local/tomcat8export ATALINA_BASE CATALINA_HOME TOMCAT_HOME 修改应用环境变量&#xff0c;是配置生效# source /etc/pro…

python 使用 sha256 函数对密码进行加密

在 hashlib 库中&#xff0c;可以使用 sha256 函数对密码进行加密。下面是一个示例代码&#xff1a; import hashlibdef hash_password(password):# 创建一个 sha256 对象sha256_hash hashlib.sha256()# 使用 update() 方法将密码传入 sha256 对象sha256_hash.update(passwor…

今天面试一个老程序员,号称自带资源,竟然是从所有前公司偷拷的源代码!...

说到“自带资源”&#xff0c;你会想到什么&#xff1f;一位程序员的“资源”令人震惊&#xff1a;竟然是从前公司偷的源代码&#xff01;一位网友说&#xff1a;今天面试一个老程序员&#xff0c;说自己有5年的开发经验&#xff0c;离职原因是上家公司倒闭了。上机测试啥都不会…

【ArcGIS风暴】根据海拔(坡度)范围分级统计土地覆盖的类型和面积(兰州市GlobeLand30m数据为例)

本文基于DEM和GlobeLand30m土地覆盖数据,讲解根据海拔范围和坡度范围分级逐级统计兰州市土地覆盖的类型和面积。 一、数据准备 1. DEM数据 海拔和坡度分级都要基于dem来实现。文中采用的DEM数据空间分辨率为30m,由甘肃省30mdem掩膜提取而来,加载如下所示: 2. 土地覆盖数据…

html5 弹性布局

html5 弹性布局 一、移动开发常用技巧 Viewport基本知识 设置布局Viewport的各种信息1、widthdevice-width&#xff1b; 设置Viewport视口宽度等于设备宽度2、initial-scale1&#xff1b; 网页默认缩放比为1(网页在手持设备上&#xff0c;不会进行默认缩放3、minimum-scale1 网…

Excel 宏代码实现按相同值分组设置背景颜色

AltF11&#xff0c;打开编辑器&#xff0c;按如下代码编写代码&#xff1a; Sub SetGroupBg()Dim i, j, cColors Array("#CEFFCE", "#D7FFEE", "#D9FFFF", "#C4E1FF", "#DDDDFF", "#FFDAC8", "#FFE4CA&quo…