概述
对于.NET平台的初学者来说,有时候比较困惑“什么是.NET?什么是.NETCore?.NET和.NETCore区别又是什么呢?”。确实,目前微软的开发平台有两种不同的.NET运行时环境,一种是.NETFramework,另一种则是.NETCore(.NET5),不同的目标框架运行时环境不同。
那这两者的区别到底是什么,在开发时如何选择不同的.NET框架呢?本文将为.NET开发者逐一讲解。
在谈及.NET与.NETCore的区别之前,我们得先聊聊.NET的历史,了解一下为什么会有.NETCore?
.NETFramework简介
在.NETCore出现之前,微软的应用开发主要运行载体是自家的操作系统,即Windows操作系统。
年时,微软发布了.NET框架的早期版本,当前只有一个框架,即.NETFramework。不久之后,微软又发布了.NET精简版框架(.NETCompactFramework),这是.NET框架的一个子集,适用于更小的设备,特别是Windows移动设备(WindowsMobile)。这个精简版的框架是一个独立于.NET框架的代码库。它包括了整个运行时的垂直结构:运行时、框架和顶部的应用程序模型。
.NETFramework是微软为开发应用程序而创建的主要运行在Windows操作系统的软件框架。它包含了大量的FCL(FrameworkClassLibrary)框架类库并且提供了多种语言之间的跨语言互操作。.NETFramework平台的应用程序在公共语言运行时(CLR)中执行,CLR是一个应用程序的虚拟机,它提供安全、内存管理和异常处理等服务。因此,使用.NETFramework编写的计算机代码称为“托管代码”。框架类库(FCL)和公共语言运行时(CLR)一起构成了.NETFramework。
.NET跨平台–.NETCore
早期(.NETCore之前)的.NET应用程序是不跨平台(操作系统的),它只能运行在Windows操作系统上,并且操作系统中还必须安装.NETFramework环境。如果要运行在其他操作系统上,需要借助第三方的框架,比如:Mono—一个开源的第三方.NETFramework框架,它可以运行在Linux和MacOS操作系统上。
年5月,Mono开发者为了使用C#开发跨平台的移动设备应用,成立并发布了Xamarin后于年被微软收购,但这只是微软跨平台的第一步,毕竟Xamarin只适合开发移动端应用。
随意移动设备迅速占领市场,Windows平台的大势已去。直到.NETCore,.NET才算真正的跨平台,这也是微软重大的战略转变。年12月,微软拥抱开源社区,宣布开源了.NETCore的核心代码,也是.NET跨平台迈出的最重要的一步。
经过不断地迭代,年6月发布和.NETCore1.0,年3月发布.NETCore1.1.1。
.NETCore是一种模块化实现,可用于各种垂直领域,从数据中心扩展到基于触摸的设备,它是开源的,跨平台的,能在Windows、LinuxMacOSX等操作系统上运行,同时还支持Docker等容器化环境安装和部署。
.NET5
微软为了统一.NET平台,计划将所有的.NET运行时统一为一个.NET平台,并为所有应用程序模型(如:.NETCore,WindowsForms,WPF,UWP,Xamarin,Blazor)提供统一的基类库(BCL)。在年5月6日宣布了.NET5将是.NETCore3.0的下一个主要版本。
年3月,微软发布了.NET5的第一个预览版,并在同年的11月10日发布了.NET5的第一个正式版。
.NET生态
以下是一张如今.NET平台的生态示意图:
从上面的图表中可以看出,.NET生态系统有三个主要的高级组件——.NETFramework、.NETCore和Xamarin组成。
.NETFramework:支持Windows和Web应用程序。现在,你仍然可以使.NETFramework作为目标框架来构建运行于Windows操作系统的Winform、WPF和UWP等桌面应用程序,以及基于ASP.NETMVC的Web应用程序。
.NETCore:是一个新的、开源的、跨平台框架,它用于构建适用于跨操作系统的应用程序,包括Windows、Mac和Linux。结合C#,它的应用场景也相当广泛,比如:
用一套代码开发基于Xamarin的支持多端(Windows,Android,iOS)的应用程序;
可以开发基于Blazor的桌面应用;
跨平台的网站应用,WebAPI应用,微服务;
跨平台的游戏开发Unity,目前应用得非常广泛,像这类大型的手游都是使用Unity开发出来的;
基于WPF的桌面应用程序,使用WPF你可以自定义完成超酷的用户交互界面;
物联网
人工智能
机器学习
结论
俗语说:“长江后浪推前浪。”,技术领域也是如此。随着开发技术的不断发展和进步,新技术终将代替老技术。
如果你是一位.NET的初学者,并者没有历史项目(基于.NETFramework框架的项目)的包袱,建议你可以直接从.NETCore(.NET5)入手学习,因为它具备现代开发技术的绝大多数优点:开源,跨平台,支持容器化部署等。
————————————————
版权声明:本文为CSDN博主「DOTNET编程」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: