ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 一、概述 .net是除Java平台外,另外一个大型软件开发平台,跟Java平台一样,可以允许人们构建各种各样的应用,从pc到移动,从web到客户端等等; 从其IDE(Vsisual Studio)安装截图就可以看得出来,.net是有多强大; ![](https://img.kancloud.cn/9a/94/9a943224c7541ca725ae371d943bcbfb_1920x1039.png) ![](https://img.kancloud.cn/d0/20/d020d84d5c0902d2774d99205d7adbf3_1920x1039.png) ![](https://img.kancloud.cn/a3/4e/a34e8a931564d8a9273a8c6291fb6e27_1920x1039.png) 跟Java平台百花齐放不同的时候,.net平台主要是微软主导; ## 二、核心概念 .net体系目前的生态图; ![](https://img.kancloud.cn/ce/0e/ce0e99c16cdc295243e2a12176ee02c7_624x358.png) ### **.NET core(新版已经改名为.NET) .NET Core是用C#和C++编写的,并采用MIT协议作为开源协议。第一个版本的.NET Core 1.0是在2016年发布的,功能有限;.NET Core的主要特性包括开源、跨平台、现代、灵活、轻量级、快速、友好、可共享,以及为未来的软件开发而构建的; .NET Core是一个通用的软件开发框架。它允许开发人员构建各种软件,包括Web,桌面,移动,云,游戏,物联网等; **跨平台** .NET Core支持并运行在Windows、MacOS和Linux操作系统上;.NET Core跨体系结构(包括x64、x86和ARM)是一致的;可以导入相同的程序集和库,并在多个平台上使用;这些程序集和库都可以使用如下的.NET语言进行构建,如:C#、VB.NET或F#; ### .NET framework .Net Framework 历史要比 .Net Core 久一些。.NET Framework 的第一个版本大约在2002年前后推出的,而.Net Core的第一个版本,大约在2016年前后推出的,相差了将近14年的时间; .Net Framework,只针对Windows平台,包含了Windows平台的所有特性;.Net Framework是非常方便的平台,.Net Core的方便度尚不如.Net Framework。但是.Net Core的免费和跨平台特性,满足了很多小型面向业务型开发的公司的需求,是非常好的Java的替代品; > 未来是属于.NET core(新版已经改名为.NET)的,.NET Framework基本上,已经不会再更新升级了; ### .NET Standard** .NET Standard只是个标准/规范; .NET Standard 是一组所有 .NET 平台都应实现的 API。这将统一 .NET 平台,并预防将来的碎片化; .NET Framework,.NET Core,和 Xamarin会实现.NET Standard ; 在没有 .NET Standard之前生态图: ![](https://img.kancloud.cn/d7/70/d770bb067e72816275dcdc8cbfaef71c_576x311.png) 在有了 .NET Standard之后生态图: ![](https://img.kancloud.cn/e4/7a/e47aefeb2eeeec009484046a205f74f8_576x311.png) 可以看得出来.NET Standard的价值了; ### **编程语言** 在 .NET Framework 框架中支持的编程语言包括C#、VB、C++、J# 等, 但目前使用最多的是 C# 语言; 注意、ASP.NET不是编程语言,理论上可以使用任何编程语言包括C#,VB.NET、JS、、J#、Managed C++等等,最合适的编程语言还是MS为.NET Frmaework专门推出的C#; ## 三、相关概念 ### **CLI** 可以简单的把它认为是JVM的.NET版本;CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为 MSIL代码之后运行其上,甚至还可以自己写MSIL代码在CLI上面运行; ### **CLR** CLR是CLI的实现; .NET 提供了一个称为公共语言运行时的运行时环境,它运行代码并提供使开发过程更轻松的服务; CLR是一个可由多种编程语言使用的“运行时;包括,内存管理,程序集加载,安全性,异常处理和线程同步,它们可以由面向CLR的所有语言使用。在运行时,CLR根本不关心开发人员用哪一种语言来写源代码; ### **IL** IL是微软.NET平台上衍生出来的一门中间语言;.NET平台上的各种高级语言(如C#,VB,F#)的编译器会将各自的文字表述方式转化为 IL; IL本身并不知道自己是由哪种高级语言转化而来的,哪种语言中有哪些特性,IL也根本不会关心,而是由各语言的编译器了来转换为IL; 这就是.NET平台上高级语言 => IL;