“为什么你还想用ASP.NET,难道你还活在90年代吗?”这正是我的一位老同事在几年前我们即将开始的项目中我提出考虑使用ASP.NET时所说的话。当时我很大程度上认同他的看法,微软已经开发了伟大的开发语言,伟大的web框架以及围绕它的伟大的工具,但是人们依然不太满意。我们最终 没有使用ASP.NET的原因是其语言和框架的封闭性。使用ASP.NET意味着我们需要为我们的服务器支付windows服务许可证,或者为了让我们的应用程序能够部署在Linux上,就必须去填像Mono这样无数的“坑”。但是从那以后很多事情发生了变化,微软真的加快了游戏的的步伐,把ASP.NET从被迫使用的东西(因为你的雇主在使用它)变成了最“时髦”的开发者都想要用的东西。
五年前当我第一次学习C#时,我认为它是有史以来最好的编程语言,但我当时的兴奋之情并没有持续多久,因为我开始发现他们的产品有太多的缺点。当ASP.NET CORE第一次公开发布的时候我就开始使用了。而当微软宣布它是跨平台的时候,我对ASP.NET CORE和C#的兴趣再次增长。可以看出,对于开发人员来说,微软当时的问题并不是因为技术能力,性能或者其他一些指标,问题是它非常封闭,你不得不专门为微软技术付费像Windows server 和IIS去部署你的应用程序,这意味着它运行服务要比其他技术栈高很多,甚至Java-C#最大的竞争对手。尽管这点支出对于一个大企业相比于每年的收入根本不算什么,但对于一个初创企业或一个想要开发自己程序的程序员来说是非常重要的。另一个微软糟糕的地方是,他们的技术太陈旧,而且有很多旧的,废弃的和不一致的API,让整个体系看起来臃肿不堪。
根据微软对于.NET Core,ASP.NET Core以及新版本的C#的介绍,微软真的改变了游戏规则。C#已经是行业中的顶级语言之一,但是微软的这个新方向确实决定了它的地位,帮助其被大量采用。假如你对.NET完全不知,.NET CORE是微软几年前发布的新框架,它修复了之前所有的缺点。它跨平台,高性能,精益,而且最重要的是还开源。以前没有人想过微软能发布在windows之外的平台上运行的东西,更别提让整个开发平台运行在Linux和Apple OS上了。
微软使用的组件术语可能有点令人困惑,所以让我先简单地解释一下:
C#:
这是微软开发的通用编程语言的名称,是被ECMA批准的,最新的版本是7.0,但是你可以在微软的官方网站C#模块找到所有历史版本。
.NET FrameWork:
这是一个通用的应用程序框架,主要使用C#编写,它可以用于创建任何东西,从桌面应用程序到移动应用程序到web应用程序,但它只支持微软的Windows和Windows Mobile平台。
.NET Core Framework
这是.NET的新版本,它是跨平台的,可以在大对数主流平台上使用,尽管这是下一代的.NET框架,微软仍然保留着旧的框架。
.NET Standard
这是通用核心API名称,是微软提供通过.net framework和.NET CORE统一食物,使库在不同的.NET系统中互相兼容。
ASP.NET Core
这是一个构建在.NET核心框架之上的web应用程序框架,是ASP的继承者。
回归正题,让我们看看让我喜欢.NET CORE和C#的新技术:
性能
另一个使用.NET CORE的重大原因是其性能的提升,当谈到流行的通用编程语言的性能时,微软再次处于领先地位。在开发社区中,性能是一个敏感的话题,因为技术栈和工具只能在应用程序获得性能优化,其余的都交给开发人员来实现。但是开发栈能够做的是鼓励并强执行的实施最好的性能实践,并且优化常见的使用场景,以便在更大范围内实现性能最优化,这正是微软在做的。
C#本身就是一门令人惊叹的语言,它拥有许多内置的特性可以让您更好的调整应用程序的性能,但是.NET CORE团队一直在努力优化在API中构建的大量特性,以获得最佳性能。即使是ASP.NET CORE的早期版本,它的性能在echEmpower Benchmarks也有了很高的评价。有很多公司利用.NET Core优化了其性能,比如Raygun,它实现了效率的最大化。微软最近发布了最新的有巨大性能改进的.NET CORE 2.1.自从新框架发布以来,开发团队一直在推动性能优化的更新。
多功能性
我再次选择微软的最大原因是其多功能性,现在它是开源并且跨平台的,我几乎可以用一个技术栈构建所有东西。你可以用UWP构建桌面应用程序,用Xamarin(现在是微软的一部分)构建移动应用程序,用ASP.NET CORE构建web应用程序,用SignalR构建实时应用程序等等。奇怪,如果你是一个游戏开发者,你可以用unity,尽管这不是微软的。我的遵旨是用对的工具做对的事,通过这种方式,我仍然可以使用我最熟悉并且热爱的语言,工具和API。最棒的是这一切都是免费的。
工具
我从来没有想过我会这么说,因为在早期的版本中有bug,但是目前工具是.net生态系统最好的东西之一.您可以在多个平台中进行多种方式的开发。如果您喜欢使用IDE,那么Microsoft的主要IDE Visual Studio是首屈一指的。对于那些喜欢对他们的工具进行更多控制,并且不需要IDE提供的帮助的人来说,有Visual Studio Code,这是他们的代码编辑器和命令行工具,允许您构建、测试和开发应用程序,而不需要IDE上的大量代码。VS Code也有大量的第三方扩展,可以帮助您有更好的开发体验。
Mac上也有Visual Studio,它与Windows版本不同,但仍然是一个完整的软件包,允许您在Mac OS上开发微软的新栈。如果你在Linux上,或者只是想要一个不同于微软提供的IDE ,Jetbrains(Android Studio背后的公司)已经发布了一个名为Rider的IDE,它很棒,是我在Mac上开发的主要工具。Rider在三大主流平台都是可用的,微软的Intellisense自动完成系统是我在任何主要的开发栈中发现的最好的,加上Jetbrains ReSharper ,没有比这更高效的了。我的主要开发机器是一台MacBook,我喜欢用Jetbrains Rider或VSCode工作。
Visual Studio For Mac
长期以来,微软一直在他们的团队中投入时间和技术努力,这意味着他们拥有稳定的开发团队、经验丰富、知识丰富的工程团队以及多年积累的信任。新的.NET CORE打开了一个更大的市场,同时展示了一个大公司能做什么并且实现快速的转型。在现任首席执行官萨蒂亚•纳德拉(Satya Nadella)获得任命后,他开始推动公司的技术和开发工作,导致了所有这些重大变化,这是有道理的,因为他也是技术出身。c#和.net Core可能是微软长期以来在开发领域所发生的最好的事情,我很高兴他们正在做他们应该做的事情。
原文链接:https://kaushalsubedi.com/blog/2018/04/24/how-microsoft-made-me-love-net-core-and-c-again/