.NET是一个开发平台,或者叫开发者平台。使用.NET你可以创建不同类型的应用程序,使用多种开发语言、编辑器和工具库创建网页、手机、桌面以及游戏等应用。其核心特点是:免费、开源和跨平台。
1.语言和平台
我们先来理解一下什么是.NET开发平台。
简单说,开发平台就是为应用软件开发提供的一个工作平台。.NET开发平台主要包括公共语言运行时(CLR)和框架类库(FCL)。其中FCL包含基础类库(BCL)和ASP.NET(Core)、ADO.NET、WPF、WinForm等框架类库。
经常会听到有人拿.NET与Java对应。严格来说是不对的,与Java对应的是C#,与JVM对应的是CLR,与JDK对应的是.NETFramework/.NETCore/.NET5+SDK。JVM上有多种语言,CLR上也有多种语言。比如JVM上有Java、Scala、JPython等,CLR上有C#、F#、IronPython等。
当然,平时我们不必刻意去区分对应关系。当我们听到有人把.NET与Java对应时,也完全不必较真。因为C#语言在.NET平台的市场上占据了绝对主导的地位,所以人们默认就把.NET与C#绑在了一块儿。比如人们习惯了说.NET生态和Java生态,而很少听说C#生态。
还有人把.NET等同于.NETFramework或.NETCore。准确的来说也是不对的,.NET是开发平台,.NETFramework是在.NET平台上针对Windows系统实现的开发框架,.NETCore/.NET5+是在.NET平台上实现的支持多操作系统的跨平台开发框架。
2.主要特点
前面说到了.NET的核心特点是免费、开源和跨平台。即,它的开源协议是最开放的MIT协议,允许在任何商业环境中使用。它的跨平台特性使得它可以它可以运行于任何环境,如Windows、Linux、macOS、iOS、watchOS和Docker等。
.NET的另一个我最喜欢的特点是:大生态。来看一张来自官网的图:
3.多语言支持
你可以使用多种语言来编写.NET应用程序,主流的语言有:C#,F#和VisualBasic。
F#是一种跨平台的、开源的函数式编程语言。它还包括面向对象和命令式(Imperative)编程。它为那些熟悉函数式编程语言的人转换到.NET平台提供了便利。函数式编程在某些场景下比面向对象编程更方便高效,有其自身特点,是对.NET平台的一个有益补充。
VisualBasic,简称VB,是一种接近人类语言的语言。它的语法简单,易学,一般用于建立基于事件驱动的视窗应用程序。很多传统企业和小公司还在用。现在很多人学VB语言主要是为了VBA编程,使用Excel自动化办公。
当年也出现了像IronPython、IronRuby、IronScheme等,不过这些项目已经死掉了。
4.多开发工具支持
你可以使用多种工具来进行.NET编程,有强大的VisualStudio、轻小的VisualStudioCode和JetBrains出品的Rider等。
VisualStudio:Windows上功能齐全的集成开发环境(IDE),用于构建各种类型的.NET应用程序。还有专为MacOS打造的兄弟款:VisualStudioforMac。
VisualStudioCode:可在Linux、macOS或Windows上开发,建立跨平台网站和服务,需安装C#扩展。
JetBrainsRider:JetBrains出品,体验也不错,它使用的是IntelliJ和ReSharper技术构建的跨平台.NETIDE。
OmniSharp:它使Atom、SublimeText、Emacs和Vim等编辑器支持跨平台.NET开发。
5.人们的误解
还有人认为.NET的性能低,这也是老旧观念了。从.NETCore成熟后,其性能和Go旗鼓相当。在Web综合性能方面,其性能高出Node.js的7倍多(.NET5高出10倍多)。
还有很多人认为.NET是由微软自己开发和维护的,其实不完全是。自.NET开源以来,参与建设.NET平台的有微软自己的团队,也有来自世界各地的6万多名开发者和3700多家公司。另外,早在2014年,微软就成立了.NET基金会,有微软、Google、三星等大厂扶持,用来推进.NET平台的发展。
.NET热情拥抱了开源和跨平台,开发市场也在热情地拥抱.NET,越来越多的开发人员和公司参与到了.NET的大家庭中。