提起.NET,想必您肯定听说过.NETFramework,它是构建.NET生态系统中最受欢迎的技术。但近年来.NETCore和.NETStandard技术也是发展迅猛,那么问题来了,我们如何在项目中合理的选择呢?
随意地在.NET生态系统中使用技术栈时,通常会出现一些混乱,因为选项太多,例如应该选择哪种类型的运行时?在本文中,我们将尝试阐明所有这些要点。
.NET是由Microsoft创建的开源开发平台,用于构建许多不同类型的应用程序,例如:Web,移动,桌面,游戏等。它由不同的工具,编程语言和库组成。让我们从.NET的简要历史开始。
.NET背后的历史
在年代,Microsoft开始致力于开发名为.NETStrategy的产品。该策略的重点是涵盖所有Microsoft产品,并将.NET添加到现有产品名称中。在年代,.NET框架被称为下一代Windows服务(NGWS)。.NET框架的第一个beta版本于年代末发布,而.NET1.0的第一个版本于年2月13日发布。从那时起,持续更新了许多版本。
.NETFramework2.0(年11月):通用集合,迭代器,可为空的类型等。.NETFramework3.0(年11月):WPF,WCF和WWF。.NETFramework3.5(年11月):AJAX,LINQ,ASP.NETMVC。.NETFramework4.0(年4月):MEF,DLR,任务并行库,Razor视图引擎,新的C#/VB语言功能。.NETFramework4.5(年8月):支持异步,zip压缩支持。
.NETCore1.0(年11月):第一个版本包含跨平台支持,ASP.NET5和.NETNative。.NETCore2.0(年8月):第二个版本,具有重大性能改进并实现了.NETStandard2.0。.NETFramework4.8(年4月):最终版本包括JIT增强功能,针对WPF应用程序的HighDPI增强功能,可访问性改进,性能更新以及安全性增强。
.NETCore3.0(年9月):性能改进,C#8.0新功能实现了.NETStandard2.1。Windows桌面支持Windows窗体和WPF的.NETCore。.NET生态系统概述
当前,.NET生态系统由开发平台中的不同组件组成。它包含不同的运行时,例如:
.NET框架(WPF,Windows窗体,ASP.NET),以Windows为中心。.NETCore(ASP.NETCore,通用Windows平台UWP),跨平台,可与其他版本并行使用。XamarinMono(IOS,OSX,Android),跨平台。
上面所有的运行时都实现了.NET标准库,这是.NETAPI的规范,该规范具有每个运行时的实现。因此,为一个运行时创建的代码可以与其他运行时一起执行。
所有运行时都使用工具和基础结构来编译和运行代码。包括语言(C#,VisualBasic),编译器(Roslyn),垃圾回收以及诸如MSBuild或(Core)CLR之类的构建工具。
.NETFramework
.NETFramework是用于在Windows上构建和运行应用程序的软件开发框架,它是部分开源的。.NETFramework由公共语言运行库(CLR)、.NETFramework类库和应用程序工作负载(WPF,WindowsForms和ASP.NET)组成。CLR是通用基础结构的一部分,可以运行代码,执行jit,执行垃圾回收(C#,VB.NET,F#)等。
由CLR管理的代码称为托管代码。代码被编译为通用中间语言(CIL),并存储在程序集中(扩展名为.exe或.dll)。当应用程序运行时,CLR进行汇编并使用即时编译器(JIT)将机器代码转换为可以在特定计算机体系结构上运行的代码。
.NET框架包含提供各种功能的类,接口和类型,例如字符串,文件系统支持等。它允许用户创建不同类型的应用程序,例如:控制台应用程序或Windows窗体,WindowsCommunicationFoundation(WCF),WindowsWorkflowFoundation(WF),WindowsPresentationFoundation(WPF),ASP.NET(表单,WebAPI),Azure(WebJobs,CloudServices)。其中大多数特定于Windows平台并使用WindowsAPI,因此它们仅适用于Windows平台。
如果要运行使用.NETFramework生成的应用程序,则需要先安装它,尽管Windows已经安装了某些版本。每个版本都有CLR和库。可以同时安装多个版本(仅主要版本)。次要版本将覆盖现有版本,因为它们不包含制动更改。例如,对于.NET4.2.3,主要版本是4,次要版本是2,而版本3则是修订版本。
.NETFramework通常安装在C:\Windows\Microsoft.NET\Framework(或Framework64)上。其中,您可以找到安装了所有主要版本的文件夹。