.NET 很好,你可能对它有一些误解

  > 作者:Charles Chen

在 20 年前的 2002 年, 微软公布了下一代的软件、服务的愿景和路线,2 月 13 日,Visual Studio .NET 推出,.NET 开发平台的第一个版本正式向世界发布。

到现在为止,.NET 都已经 20 岁了, 它已经成长为一个成熟稳定的平台。

但是,我发现很多开发人员还是对 .NET 有一些偏见和误解,让我们来消除这些误解吧!

如果你身边也有这样的朋友,请把这篇文章转发给他们。


误解 1:.NET 只能在 Windows 上运行?

实际上这个说法从早期的 .NET 就一直存在,也确实如此,.NET Framework 最初是为 Windows 构建的,因为包含了很多 Win 32 API 的引用,导致跨平台变得困难。

直到微软在 2016 年认真对待 .NET Core,他们才开始解决 Mono 中的一些问题, 以及对 Win32 API 的挥之不去的依赖。但是在早期,.NET Core 、.NET Framework 、 .NET Standard 这些也让开发人员感到混乱,不过值得庆幸的是,在 .NET 5 和现在的 .NET 6 中,这一切都已成为过去。

如今,.NET 6(最新的 .NET)可以在Windows、Linux和macOS上运行,并支持 x86、x64、Arm32和 Arm64。

d30bc90f177f4fd4c905dde416ee5a59.png

Microsoft 为多个平台提供 SDK 和运行时。

这意味着,您可以在最新的 M1 MacBook 上构建 .NET 应用程序:

0460d31fd77366067161ab3f3e525fb2.gif

在 2021 MacBook Pro M1 上使用命令行构建一个简单的控制台应用程序。


误解 2:.NET 比 Node/Python/Go/Rust 慢?

实际上,.NET 6 具有极高的吞吐量,并且在 Web 测试中提供的吞吐量是在 Node 和 Python 上运行的任何框架的多倍。

最近几年,.NET 团队非常关注运行时几乎所有方面的核心性能,虽然显然它不会在原始性能上击败 Rust 或 C++,但它在运行 Web 应用方面并不落后。

而 Task Parallel Library 和 Span 为构建吞吐量和性能提供了更高的上限。

根据 TechEmpower Benchmarks 提供的Web 框架测试报告, 在 Round 15 from February 14, 2018 中,您可以看到 ASP.NET 实际上落后于 Node.js:

25fb3e212ca09bfc8df64aa84d6d2d9a.png

2018 年:Node.js 第 8位, ASP.NET Core 13 位 ,Express 在 28 位,Flask 57位, Django 61 位。

在 Round 20 in February 8, 2021 中,仅仅三年后,.NET 绝对压倒了 Node 和 Python,并且仅次于基于 Rust 的服务。

21d7d033acebd6a2767d4c815c01a520.png

2021 年: .NET Core 在第8位, Node.js 56 位, Express 94 位, Flask 111 位, Django 118位.

在 gRPC 基准测试中,.NET 的表现也非常出色。

90f7dc8ab56528bfbfd9285fce2f7f79.png

如果您正在使用 gRPC,请不要考虑 Node 或 Python。


误解 3:.NET 过时了?

和 Rust 和 Go 相比,很多人觉得 .NET 是一个过时的平台,实际上,.NET 一直都在更新,并且语法和特性都很先进, 泛型, async/await, 匿名类型, 元组, 模式匹配,Expression 等等。

借助于强大的 LINQ,C# 看起来非常像 JavaScript:

c04fed8d491d1819c8f154d25e7b0204.png

根据 GitHub 的 2021 年 Octoverse 状态报告,C# 在过去几年中略有复苏:

2eedea2f32024c9718ce3e6a3df7b138.png


误解 4:开发工具很贵?

实际上,早期的 Visual Studio 开发工具确实很贵!

但是现在,微软不仅提供免费的、功能齐全的 Visual Studio 社区版,你还有其他的选择:

•JetBrains Rider•适用于 macOS 的 Visual Studio•当然还有VS Code

最近,我在 MacBook Pro M1 上使用 VS Code 完成了我的大部分 C#/.NET 开发:

f2b6a28b5e4858ad15af0fdf9653ed88.gif


误解5:.NET 对开源不友好 ?

早期的 .NET 确实是这样的,但是自从 Satya Nadella 掌权以来,微软在开源方面的整个轨迹已经发生了巨大的转变。不过微软在这方面的转型和成长仍然还有很长的路要走。

.NET 本身由.NET Foundation管理,.NET 编译器 (Roslyn) 和很多其他内部组件都在 GitHub ,并且自 2015 年以来,它已通过 Red Hat Enterprise Linux 认证。

误解6:.NET 只能开发企业管理系统 ?

实际上,.NET 现在已经发展成一个统一平台,你可以用它开发各种各样的应用,包括桌面软件,Web 服务,3D 游戏等等。

.NET 也有很多构建跨平台应用程序的框架,比如:

•Multi-platform App UI•Uno Platform•Avalonia

全文完... 

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

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

相关文章

SQL语言实现金额小写转大写完整案例代码

1. 数字大小写对照表 一到十数字大小写: 1——壹,2——贰,3——叁,4——肆,5——伍,6——陆,7——柒,8——捌,9——玖,10——拾 2. 大小写转换案例 将12.345元转换为大写 select dbo.L2U(12.345,1) select dbo.L2U(123456789.345,1) 结果: 3. SQL转化代码 CREA…

盘点PHP编程常见失误

为什么80%的码农都做不了架构师?>>> 变量声明 如果在一条语句中声明一个变量,如下所示:$varvalue;编译器首先会求出语句右半部分的值,恰恰正是语句的这一部分常常会引发错误。如果使用的语法不正确,就会出…

Educational Codeforces Round 1

被C坑的不行不行的。。。其他题目都还可以。 A - Tricky Sum 求1,2,3,...,n的加和,其中2^x(x>0)为负。 因为2^x的个数很少,所以以每个2^x为分界点进行判断. 初始化x0; 如果n>2^x,求出2^(x-1)到2^(x)之…

甲骨文严查Java授权,企业连夜删除JDK

文 | Travis出品 | OSC开源社区(ID:oschina2013)根据外媒 The Register 报道和各大企业的反馈,甲骨文公司近日已经开始将 Java 纳入其软件许可审查中,目的是找出那些处于不合规边缘或已经违规的客户,甲骨文此举是为了推…

前端日志分析

前端日志分析介绍 前端日志分析是通过搜集访客访问网站的行为数据,然后在这些用户日志数据的基础上通过定量和定性分析,来改善用户的浏览体验及网站性能,最终提升商业回报的过程,通常,前端日志分析遵循以下步骤…

zuul转发的一些常见异常

为什么80%的码农都做不了架构师?>>> ##序 使用zuul作为api网关的话,经常会碰见一些异常,这里小结一下。 ##ZuulException 这个是最外层的异常 public class ZuulException extends Exception {public int nStatusCode;public Str…

Xamarin效果第八篇之视频监控

还记得全年帮助一个朋友通过技术手段写了一个PC端的监控软件,这不再次想起此事,准备基于Xamarin再来实现一个移动端的监控;毕竟直接手机上打开还是比较方便的;最终实现的效果:1、启动页动画,原来直接贴图片;这次尝试使用Lottie来玩玩,直接贴参考连接https://www.codesitory.com…

前端实现连连看小游戏(1)

博主玩了这么久的连连看,居然是第一次发现,连连看最多只能有2个转弯。orz… 在网上搜索连连看的连线算法判断,并没有找到很全面的,经过自己摸索之后,做了一些小动画,希望大家可以看一遍都懂啦~&…

在 Visual Studio 2010 中创建 ASP.Net Web Service

第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含一个站点配制文件(Web.config)的空站点,其余的什么也没有…

C#中缓存的使用

简介缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。由于CPU从内存中读取数据的速度比从磁盘读取快几个数量级,并且存在内存中,减小了数据库访问的压力, 所以缓存几乎每个项目都会用到。…

Windows Phone 8开发环境搭建介绍

1. 如果是Windows 8系统中安装VS2012,可以直接安装:   Windows Phone SDK 8.0 是一个功能齐全的开发环境,可用于构建 Windows Phone 8.0 和 Windows Phone 7.5 的应用和游戏。 Windows Phone SDK 将提供一个适用于 Windows Phone 的独立 Vi…

Tushare数据的绘图操作

1.在代码里调试学习实在费劲,可以把数据取到df里,在交互界面里慢慢调试 2.柱状图 绘制柱状图,默认情况下乱,数据太密了 改用曲线图

python远程执行shell 防止注入脚本_解决 window 上python远程执行shell paramiko 下令 Permission denied...

1. 若是程序是在 Linux远程执行 , 那么遇到某些下令是不需要 再输入密码的但若是 python 是在内陆 , 用 paramiko包 远程ssh登录执行下令 , 就会遇到需要输入密码2.解决办法 , 在windows上面 ssh-keygen -t rsa -C “abby192.168.1.100” , 公钥的作用域是远程 IP用户名 为’…

MT3608 高效率1.2MHz2A升压转换器和MT3608L 高效率1.2MHz 2.5A升压转换器 MT3608L和MT3608的区别

MT3608是一个恒定的频率,6引脚SOT23电流模式升压转换器的小,低功耗应用的目的。该MT3608开关在1.2MHz,并允许微小的,低成本的电容器和电感器使用2毫米或更小的高度内部软启动浪涌电流的结果,并延长电池寿命。 …

CityEngine 2012与ArcGIS 10.2破解心得

安装及破解步骤: 1.卸载机子上原有的ArcGIS的License以及Desktop。 2.安装及破解CityEngine。(安装包及注册码下载见点击打开链接) 3.安装ArcGIS Desktop即可,不需要安装Lisence。 4.如果第三步结束后ArcGIS打不开&#xff0c…

JsonRequestBehavior.AllowGet 方便浏览器调试

[HttpGet]public ActionResult getCoversationList(int CustomerId){// 获取用户相关的聊天数据,包括个人,群,系统(可以单独获取)return Json(new { result true, info "", msg "操作成功" }, JsonRequestBehavior.Al…

基于.NET6的开源工业物联网网关

什么是工业物联网网关工业物联网网关(IIoTGateway)是一种硬件设备或软件程序,作为本地设备(如PLC、扫码枪、机器人、数控机床、非标上位机等)与云端系统(如物联网平台、SCADA系统、MES系统等)之间的桥梁,在设备和云端之间流动的所…

CityEngine生成不等间距桥墩

在CityEngine中建立高架桥时自动生成的桥墩属于几乎等距的桥墩,对于不等距的桥墩该如何处理?另外,等距桥墩会有产生很多问题,比如:桥墩会压盖在下方路面上。 解决思路:获取桥墩点位数据,之后使用…

keepalived 报错 Popt libraries is required

2019独角兽企业重金招聘Python工程师标准>>> …… checking for SSL_CTX_new in -lssl... yes checking for poptGetContext in -lpopt... no configure: error: Popt libraries is required 解决办法 yum install popt-devel -y 转载于:https://my.oschina.net/col…

芒果TV会员,月卡最低9.9元,年卡最低128元!

全国首部湘商题材电视剧《一代洪商》,将于3月27日在央视八套(电视剧频道)播出,芒果TV将线上播出。该剧由王少华编剧,路奇担纲导演,孟凡耀担任总制片人,张丰毅、李立群、张睿、张含韵等人主演&am…