[.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 是由微软自己开发和维护的,其实不完全是。自 .NET 开源以来,参与建设 .NET 平台的有微软自己的团队,也有来自世界各地的 6 万多名开发者和 3700 多家公司。另外,早在 2014 年,微软就成立了 .NET 基金会,有微软、Google、三星等大厂扶持,用来推进 .NET 平台的发展。
.NET 热情拥抱了开源和跨平台,开发市场也在热情地拥抱 .NET,越来越多的开发人员和公司参与到了 .NET 的大家庭中。
[.NET大牛之路 002] 什么是 .NET的更多相关文章
- [ASP.NET MVC 大牛之路]01 - 开篇
匆匆2014,转眼就到末尾了.在这一年,你还有哪事情些想做而没有做? 2014年在我身上发生了两件意义重大的事,一是正月初一宝宝出生,我升级成为了爸爸:二是进入了一家创业公司,成为了技术负责人. 去年 ...
- [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...
- [ASP.NET MVC 大牛之路]03 - C#高级知识点概要(2) - 线程和并发
本人博客已转移至:http://www.exblr.com/liam 我也想过跳过C#高级知识点概要直接讲MVC,但经过前思后想,还是觉得有必要讲的.我希望通过自己的经验给大家一些指引,带着大家一起 ...
- [ASP.NET 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...
- [ASP.Net] 转 > ASP.NET MVC 大牛之路
URL: http://www.cnblogs.com/willick/ [ASP.NET MVC 大牛之路]01 - 开篇 [ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - ...
- [.NET大牛之路 001] .NET 其名
本文来自『.NET大牛之路』星球的分享 大家好,这是 .NET 大牛这路的第 1 篇文章.大家期待已久的课程今天正式开始了.既然我们整个体系课程都将围绕 .NET 展开,那我们今天就先聊一聊 .NET ...
- [.NET大牛之路 006] 了解 Roslyn 编译器
.NET大牛之路 • 王亮@精致码农 • 2021.07.09 维基百科对编译器的解释是:编译器是一种程序,它将某种编程语言编写的源代码(原始语言)转换成另一种编程语言(目标语言).编译是从源代码(通 ...
- [.NET大牛之路 005] .NET 的执行模型
.NET大牛之路 • 王亮@精致码农 • 2021.07.06 前面我们介绍 .NET 历史时讲过,微软基于 .NET Framework 重新设计并创造了跨平台的 .NET Core,目前已经发展到 ...
- [.NET大牛之路 007] 详解 .NET 程序集
.NET大牛之路 • 王亮@精致码农 • 2021.07.13 上一篇我们介绍了 Roslyn 编译器,我们知道,我们编写的 C#/VB 代码经过 Roslyn 编译器编译后会生成程序集文件.按照之前 ...
随机推荐
- 测试报告$\alpha$
pytorch可视化编程网站VisualPytorch NAG \(\alpha\)版本发布了!点击网址访问:VisualPytorch 一.测试查虫(bug detection) 测试贯穿了开发.集 ...
- Mac 将 App 程序打包成为 dmg
用最简单的打包方式,将自己开发的App打包成为DMG,实现共享分发,快速安装 1. 新建DMG 打开磁盘工具,新建DMG File->New Image->Blank Image 创建DM ...
- libminipng,压缩png的swift-framework
libminipng 通过lodepng解析png图片,使用pngquant算法进行压缩的swift-framework 方法说明: /// 通过PNG图片Data压缩 /// /// - Param ...
- kubernetes dashboard延长自动超时注销
方法1:部署清单时,修改yaml文件,添加 container.Args 增加 --token-ttl=43200 其中43200是设置自动超时的秒数.也可以设置 token-ttl=0 以完全禁用超 ...
- 设置vue全局配置
全局配置 创建全局配置文件 vue.config.js 添加配置项
- 关于jmeter线程组和循环次数的设置
初始设置:设置线程数 n = 80,循环次数a = 1,ramp-up period=5 一 计算最后一个线程的生成时间(last) 总共生成80个线程,总共需要5秒,每秒钟会启动16个线程,所以,第 ...
- 037.Python的UDP语法
UDP语法 1 创建一个socket的UDP对象 import socket #创建对象 socket.SOCK_DGRAM 代表UDP协议 sk = socket.socket(type=socke ...
- Linux进阶之软件管理
本节内容 一.rpm:管理linux软件程序的 特点:安装方便 不能解决依赖关系 1.安装软件: -i: -v: -h: rpm -ivh 包名 2.卸载软件 -e: 清楚 rpm -e 程序名 3. ...
- 8.8-9 fsck、dd
8.8 fsck:检查并修复Linux文件系统 fsck命令用于检查并修复文件系统中的错误,即针对有问题的系统或磁盘进行修复,类似的命令还有e2fsck命令.有关fsck的使用需要特别注意的是: ...
- 机器人的运动范围--BFS
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] .一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左.右.上.下移动一格(不能移动到方格外),也不能进入行坐标和列 ...