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