.NET Framework 是为其运行的应用提供各种服务的托管执行环境。 它包括两个主要组件:公共语言运行时 (CLR),它是处理运行应用的执行引擎;.NET Framework 类库,它提供开发人员可从其自己的应用中调用的已测试、可重用代码库。 .NET Framework 提供的用于运行应用的服务包括:
上述描述应用自(MSDN)[https://docs.microsoft.com/zh-cn/dotnet/framework/get-started/index]
2002年微软公司发布的第一个 .NET框架—— .NET Framework,不久后又发布了 .NET Compact Framework 用于在较小的移动设备(Windows mobile),而 .NET Compact Framework 也含有一套类似 .NET Framework 体系(Runtime, Framework,Application Model),它是一个复制精简版的 .NET Framework。在数年间微软乐此不疲的推出了数个类似 .NET Framework的框架,以用于在不同的设备和平台上运行。每个Framework都有类似的体系但又不完全相同的,这样Framework越来越多,对开发者来说不一样的设备即便功能相同也需要维护多套代码,增加了开发的复杂度。
微软对这些问题的重新思考和改进让 .NET Core横空出世。
.NET Core是一个开源的模块化的Framework,不管是开发web或移动设备都在同一个Framework(.NET Core)下运行,而且 .NET Core也可在不同的操作系统上运行,包括Windows、linux、MacOS,实现了跨平台跨设备。
更棒的是 .NET Core 在发布程序时不用事先安装Framework而是通过Nuget下载,这样在初次部署时就不用安装一个复杂而庞大Framework,而是按需下载。这种基于Nuget的按需加载铸就了 .NET Core 跨平台。
.NET Core 构成体系如下:
先说说什么是 .NET Framework,这个东西呢,简单来说,是→两个部分构成,一个叫做公共语言运行时,一个呢,是类库(不是内裤,南方同学注意发音)。
公共语言运行时(Common Language Runtime)有时候也被称为 .NET运行时(.NET Runtime),有点类似于Java中的JVM,这里我们姑且就把他理解为,解释你所编写的C#代码(或则F#,不可否认.NET是多语言平台)给计算机,并让其执行的一个工具,细究起来,就涉及到了编译原理,计算机组成原理和很多很多计算机理论知识,嗯,推荐一本我自己可能都不会去看的书——《CLR via C#》。
.NET Framework 类库呢,就是是把我们常用的一些方法和类,封装起来,便于开发人员直接调用而不用重复编写。
那么.NET Core
呢?
同样的,.NET Core也提供了CLR和类库,用于开发。所以呢,.NET Core是处在一个与 .NET Framework的同级的地位,微软推出其是为了更好的部署跨平台的战略。同时推出的 ASP.NET Core
和ASP.NET Core MVC
等用于web开发,同时,也提供了UWP通用应用和Xamarin跨平台开发的应用。