[.NET大牛之路 002] 什么是 .NET
.NET 是一个开发平台,或者叫开发者平台。使用 .NET 你可以创建不同类型的应用程序,使用多种开发语言、编辑器和工具库创建网页、手机、桌面以及游戏等应用。其核心特点是:免费、开源和跨平台。
语言和平台
我们先来理解一下什么是 .NET 开发平台。
简单说,开发平台就是为应用软件开发提供的一个工作平台。.NET 开发平台主要包括公共语言运行时(CLR)和框架类库(FCL)。其中 FCL 包含基础类库(BCL)和 ASP.NET (Core)、ADO.NET、WPF、WinForm 等框架类库。
经常会听到有人拿 .NET 与 Java 对应。严格来说是不对的,与 Java 对应的是 C#,与 JVM 对应的是 CLR,与 JDK 对应的是 .NET Framework/.NET Core/.NET 5+ SDK。JVM 上有多种语言,CLR 上也有多种语言。比如 JVM 上有 Java、Scala、JPython 等,CLR 上有 C#、F#、IronPython 等。
当然,平时我们不必刻意去区分对应关系。当我们听到有人把 .NET 与 Java 对应时,也完全不必较真。因为 C# 语言在 .NET 平台的市场上占据了绝对主导的地位,所以人们默认就把 .NET 与 C# 绑在了一块儿。比如人们习惯了说 .NET 生态和 Java 生态,而很少听说 C# 生态。
还有人把 .NET 等同于 .NET Framework 或 .NET Core。准确的来说也是不对的,.NET 是开发平台,.NET Framework 是在 .NET 平台上针对 Windows 系统实现的开发框架,.NET Core/.NET 5+ 是在 .NET 平台上实现的支持多操作系统的跨平台开发框架。
主要特点
前面说到了 .NET 的核心特点是免费、开源和跨平台。即,它的开源协议是最开放的 MIT 协议,允许在任何商业环境中使用。它的跨平台特性使得它可以它可以运行于任何环境,如 Windows、Linux、macOS、iOS、watchOS 和 Docker 等。
.NET 的另一个我最喜欢的特点是:大生态。来看一张来自官网的图:
从图中我们可以看到,.NET 支持 Web、桌面客户端、移动应用、微服务、云服务、机器学习、游戏、物联网(IoT)等开发,几乎涵盖了所有应用场景。也就是说,我们只需要掌握 C# 一门语言,就可以应对几乎所有应用场景的开发。这个优势,目前没有任何一门其它语言或平台可以相比。
其中部分生态目前相对还不是非常成熟,比如机器学习和大数据方面。随着微软和社区逐渐把 .NET 生态发展壮大,.NET 也会迎来越来越美好前景。
多语言支持
你可以使用多种语言来编写 .NET 应用程序,主流的语言有:C#, F# 和 Visual Basic。
- C# 是一种简单、现代、面向对象和类型安全的编程语言,其名字的意义源于 C++,并受到了五线谱中的升号 # 的启发。它在 C++ 的基础上再 ++ ,就是 4 个 +,即 #,恰好和五线谱中的 #(sharp) 一样。所以 C# 读作 [si:'ʃɑrp],不要读成 C 井哦。
- F# 是一种跨平台的、开源的函数式编程语言。它还包括面向对象和命令式(Imperative)编程。它为那些熟悉函数式编程语言的人转换到 .NET 平台提供了便利。函数式编程在某些场景下比面向对象编程更方便高效,有其自身特点,是对 .NET 平台的一个有益补充。
- Visual Basic,简称 VB,是一种接近人类语言的语言。它的语法简单,易学,一般用于建立基于事件驱动的视窗应用程序。很多传统企业和小公司还在用。现在很多人学 VB 语言主要是为了 VBA 编程,使用 Excel 自动化办公。
当年也出现了像 IronPython、IronRuby、IronScheme 等,不过这些项目已经死掉了。
多开发工具支持
你可以使用多种工具来进行 .NET 编程,有强大的 Visual Studio、轻小的 Visual Studio Code 和 JetBrains 出品的 Rider 等。
- Visual Studio:Windows 上功能齐全的集成开发环境(IDE),用于构建各种类型的 .NET 应用程序。还有专为 MacOS 打造的兄弟款:Visual Studio for Mac。
- Visual Studio Code:可在 Linux、macOS 或 Windows 上开发,建立跨平台网站和服务,需安装 C# 扩展。
- JetBrains Rider:JetBrains 出品,体验也不错,它使用的是 IntelliJ 和 ReSharper 技术构建的跨平台 .NET IDE。
- OmniSharp: 它使 Atom、Sublime Text、Emacs 和 Vim 等编辑器支持跨平台 .NET 开发。
人们的误解
至今我还偶尔会看到网上的一些评论说,.NET 是闭源的、收费的、只能在 Windows 上跑等言论。这些都是误解,这些人的观念都还停留在 2016 年以前,面对这些评论,我们只能呵呵了。
还有人认为 .NET 的性能低,这也是老旧观念了。从 .NET Core 成熟后,其性能和 Go 旗鼓相当。在 Web 综合性能方面,其性能高出 Node.js 的 7 倍多(.NET 5 高出 10 倍多)。
还有很多人认为 .NET 是由微软自己开发和维护的,其实不完全是。自 .NET 开源以来,参与建设 .NET 平台的有微软自己的团队,也有来自世界各地的 6 万多名开发者和 3700 多家公司。另外,早在 2014 年,微软就成立了 .NET 基金会,有微软、Google、三星等大厂扶持,用来推进 .NET 平台的发展。
.NET 热情拥抱了开源和跨平台,开发市场也在热情地拥抱 .NET,越来越多的开发人员和公司参与到了 .NET 的大家庭中。
作者:精致码农-王亮