微软这几年对跨平台的推进力度很大,.NET5的意味着要推出一个核心框架支持跨操作系统,不过在真正实现之前,我们还是要维护好现有的代码项目,下面就现有的情况进行个梳理。静悄悄的等待跨平台的统一核心框架的来临
抽时间梳理下.NET框架,有个整体的认知。下图展示了.NET中常见的名词,该图也简要的介绍了他们之间的关系。下面根据该框架进行梳理,先简单介绍常见名词的概念,再介绍他们之间的联系。
一、常见的概念
1、.NET
.NET是一个免费的、跨平台(操作系统)的、开源的开发人员平台,用于构建许多不同类型的应用程序。借助.NET,您可以使用多种语言(C#,F#或Visual Basic),编辑器和库来为Web,移动,桌面,游戏和IoT进行构建。如何理解.NET是个平台呢?平台是一个环境,能够与操作系统打交道,满足.NET规范的应用都可以在.NET支持的操作系统上运行,所以.NET支持的操作系统越多,我们借助.NET上写的应用就可以运行在越多的操作系统上。
.NET是如何和操作系统打交道的呢?微软推出.NET Framework框架,用于与Windows操作系统打交道,也仅支持Windows操作系统;后来又推出.NET Core,支持跨平台,即可以与Windows,Linux和macOS打交道;还推出了Xamarin / Mono ,用于在所有主要的移动操作系统上运行应用程序。总结说..NET就是个运行环境,他有多种实现,每个实现都是为了支持不同的操作系统,比如.NET Framework支持Windows上正在运行的网站,服务,桌面应用程序,.NET Core用于在Windows,Linux和macOS上运行网站,服务和控制台应用程序,Xamarin / Mono 用于在所有主要的移动操作系统(包括iOS和Android)上运行应用程序。
2、.NET Framework
这里只是简单的说一下.NET Framework,有时间梳理下.NET Framework。
.NET Framework是.NET的原始实现,是用于在Windows上构建和运行应用程序的软件开发框架,它支持Windows上正在运行的网站,服务,桌面应用程序等。那么.NET Framework框架是什么样的呢?
.NET Framework的两个主要组件是公共语言运行库(CLR)和.NET Framework类库。CLR是处理运行的应用程序的执行引擎,它提供诸如线程管理,垃圾回收,类型安全,异常处理等服务。.NET Framework类库提供了一套API(用于读取和写入文件,连接到数据库,图形等的API)和公共功能的类型(比如字符串,日期,数字等类型)。
.NET应用程序是用C#、F#或Visual Basic编程语言编写的,代码被编译成与语言无关的通用中间语言(CIL),编译后的代码存储在程序集中-扩展名为.dll或.exe的文件。当应用程序运行时,CLR将采用程序集,并使用即时编译器(JIT)将其转换为可以在其运行的计算机的特定体系结构上执行的机器代码。
3、.NET Core
这里只是简单的说一下.NET Core,有时间梳理下.NET Core。
.NET Core是跨平台的实现,用于在Windows,Linux和macOS上运行网站,服务和控制台应用程序。.NET Core在GitHub上是开源的。.NET Core是Microsoft和GitHub上的.NET社区维护的.NET的开源和跨平台版本。.NET Core的所有方面都是开源的,包括类库,运行时,编译器,语言,ASP.NET Core Web框架,Windows桌面框架和Entity Framework Core数据访问库。
Xamarin通过专门用于在iOS,Android,macOS等上构建应用程序的工具和库扩展了.NET平台。下面是Xamarin添加到.NET平台的东西:
- 访问本机功能的基本框架
- 可扩展标记语言(称为XAML),用于使用C#构建动态移动应用
- 通用模式的库,例如模型视图ViewModel(MVVM)
- 特定于平台的库,包括从Google,Apple,Facebook等访问API,以添加丰富的功能
- 编辑器扩展提供语法突出显示,代码完成,设计器以及其他专门用于开发移动页面的功能
5、.NET Standard
.NET Standard是所有.NET实现(比如上边介绍的.NET Framework和.NET Core等)通用的API的基本集合。但是每个实现还可以扩展特定于其运行的操作系统的其他API,例如.NET Framework是仅Windows的.NET实现,其中包括用于访问Windows注册表的API。 也可以理解为:.NET有多种实现比如上边介绍的.NET Framework和.NET Core等,每个实现都允许.NET代码在不同的地方执行-Linux,macOS,Windows,iOS,Android等,.NET Standard就是所有这些.NET实现中通用的API的正式规范。
各种 .NET 实现以特定版本的 .NET Standard 为目标。 每个 .NET 实现版本都会公布它所支持的最高 .NET Standard 版本,这种声明意味着它也支持以前的版本。 例如,.NET Framework 4.6 实现 .NET Standard 1.3。也就是说,它会实现在 .NET Standard 版本 1.0 到 1.3 中定义的所有 API。 同样,.NET Framework 4.6.1 实现 .NET Standard 1.4,而 .NET Core 1.0 则实现 .NET Standard 1.6。下表列出了支持每个 .NET Standard 版本的最低平台版本。 这意味着所列平台的更高版本也支持相应的 .NET Standard 版本。 例如,.NET Core 2.2 支持 .NET Standard 2.0 及更低版本。
6、ASP.NET、WPF、Windows Forms、WCF等
ASP.NET、WPF、Windows Forms、WCF都是 .NET Framework框架中的应用模型,即用于于特定区域应用开发的库, ASP.NET用于 Web 应用、ADO.NET用于数据访问 、 Windows Communication Foundation用于面向服务的应用,Winform和Windows Presentation Foundation用于Windows 桌面应用的 。
未来呢.NET Framework框架中的应用模型有可能会随着发展继续增加扩展,也有可能 .NET Framework和.NET CORE融合为一个全新的框架,支持更多的平台,全新框架中的应用技术也会相应的进行变更。YY。。。
7、ASP.NET Core、UWP、Winform、WPF
ASP.NET Core、UWP、Winform、WPF都是.NET Core框架中的应用模型,即用于于特定区域应用开发的库,因为.NET Core版本一直在更新中,肯定越来越全面,支持的东东会更多,.NET Core框架成为主流大势所趋。
另目前.NET Core3.0及更高版本支持UWP、Winform、WPF
8、C#、F#和VB
它们都是.NET平台下的一个程序设计语言,用于创建应用程序的高级语言, 程序设计语言是为了方便开发人员和计算机沟通的工具。
二、以上概念中的关系
上边已经简略的介绍了相关概念,仔细读过之后也都明白了他们之间的关系。这里就对一些容易混淆的做下总结和扩展。先来张简单的关系图如下:
1、.NET、 .NET Framework、.NET Core和Xamarin / Mono四者之间的关系?
(1).NET包括 .NET Framework、.NET Core和Xamarin / Mono, .NET Framework、.NET Core和Xamarin / Mono是.NET针对于不同操作系统的不同框架环境。
(2).NET Framework、.NET Core和Xamarin / Mono通用的API的基本集合都是.NET Standard
(3).NET Core和.NET Framework共享许多相同的组件,您可以在两者之间共享代码。一些主要区别包括:
-
- .NET Core是跨平台的,可在Linux,macOS和Windows上运行。.NET Framework仅在Windows上运行。
- .NET Core是开源的,接受社区的贡献。.NET Framework源代码可用,但没有直接贡献。
- .NET的大部分创新都发生在.NET Core中。
- .NET Framework包含在Windows中,并由Windows Update在机器范围内自动更新。.NET Core是独立提供的。
2、ASP.NET、ASP.NET Core、 .NET Framework和.NET Core之间的关系?
(1)ASP.NET是.NET Framework框架的一种应用模型,一种开发技术
(2)ASP.NET Core是.NET Core框架的一种应用模型,一种开发技术
四、浅谈.NET5
开头也提到,微软推出了.NET 5 Preview系列版本,这推出意味着融合 .NET Framework、.NET Core、Mono、Xamarin 等优点构建出一个统一的 .NET 平台 势在必行。但是在此之前我们还是要沉下心搞好现有的,谁知道.NET5后续版本能够完成整合需要多久。另外也要加强.NET Core的应用,这样才能更好的与.NET5实现无缝对接。。。
以上是自己的梳理,不正确的地方请指正。