.NET
现在是2024年,如果提到.net,那现在还得区分是.net framework, 还是.net core。
微软是准备用时间来淡化这些概念的区别,也许若干年后,说起.net就一定指的是.net core。
就像2002年 .net framework 1.0发布的时候,那时候提到.net 一定指的就是.net framework。
从.net 5.0起,微软就淡化了.net core这个名字了。因为.net framework4.8后就完结了,所以从.net 5.0起就一定指的是.net core了。
下图是勇哥在vs2022中创建桌面程序的模板,可以看到再没有.net core了,只有.Net了。
想创建仅Windows桌面应用,则有专门的.net framework模板。
从这里我们就可以明白了微软的意图,它在vs2022中创建的所谓的.Net项目就已经专指的.net Core项目了。
而.NET Framework项目会带上括号标记清楚,就像下图划线的项目模板那样。
下面是勇哥在vs2022中创建的在.NET上运行的控制台程序。
从命名上已经没有.Net core了,而是称为.NET
下图这个控制台程序用到的目标框架列表。
可以看到名字叫.NET 5.0---8.0的框架,都没有写.Net Core。
但是其实它们就是.NET Core 5.0--8.0。
说明微软目标框架命名在.net Core 3.1后,就已经不再提Core了,而改称为.NET了。
.net framework
它的特点是只能用于开发widnows平台的程序,最后一个版本是4.8
再往后走就是.net core接棒了。
为了能让.net framework跨平台,出现了一种Mono技术,它可以让.net framework在其它平台上运行大部分功能。
此技术和Xamarin一起于2016年被微软收购。
.net core
.NET Core是微软开发的跨平台开源应用程序框架,适用于Windows、Linux和macOS
这个框架是云计算而生的框架。
Xamarin
Xamarin是一款跨平台移动应用开发工具,它允许开发人员使用C#语言和.NET框架来构建iOS、Android、Universal Windows Platform(UWP)、Watch OS、tvOS和Mac App等应用程序。
它于2011发布,在2016年由微软收购并开源。
MAUI(Multi-platform App UI)是Xamarin的后续版本,于2021年11月开始面向.NET 6正式发布
.net Standard
这个是微软的标准库,它本身只是个标准,怎么实现它不管。
这个库如果查看它的源代码,你会发现它只有定义,没有实现。
如果你用一个.net framework的进程去引用这个标准库,会把实现变成.net framework的实现。
同理,如果用一个.net core的进程去引用这个标准库,会把实现变成.net core的实现。
因此,创建这种.net Standard类型的dll,实际上是想让它即可以用于.net framework, 又可以用于.net core、或者Xamarin
下图说明了.net standard的架构。
下面勇哥用vs2022创建.net Standard类型的类型。
然后你就可以选择.net standard2.0 或者2.1。
如果你选择.net 6.0, 7.0, 8.0,其实就是在创建.net core专用的dll了。
.net standard和.net framework, .net core的版本对应关系如下图所示:
如下图,.NET Standard2.1已经不支持.NET Framework框架,所以如果想通用,你最高只能选择到2.0
下面是各版本和C#版本的关系:
一个问题,有了Mono后,.net framework不是可以跨平台了吗?
那为啥微软还搞了全新的.net core呢?
(一).net framework的缺点:
1。 系统级别的安装,互相影响
所有程序共享一个版本.net framwork,如果打一个补丁,有些程序适应有些程序不能适应。产生混乱。
2。 无法独立部署
没法发一个exe对方能独立运行,你得先准备好这个exe要用的.net framework版本
3。 asp.net和iis深度耦合
内核有许多和iis深度相关的代码。iis很难移植到linux平台下的。
4。 asp.net资源消耗大
5。 非云原生
.net framework推出时,还没有云计算的概念。
(二)net framework有许多历史包袱
(1)带着手铐脚镣长大的asp.net mvc
在它之前微软主推的是拖控件开发的web form技术。
而asp.net mvc则是在这个web form技术基础上继续开发出来的轻量级符合现代软开发理念的产品。
而正是由于底层是基于web form技术,比如管道模形等等技术,导致运行效率很低。
(2) asp.net底层不支持很好的单元测试、依赖注入。
正是有这些缺点和历史包袱,即使通过Mono跨平台了,也会继承这些问题。
这就是为什么有了Mono后,微软还是搞出了一个全新的.net Core的深层原因(但是微软官方对这个问题是没有直接回应的)
讲一下.net Core的优点、不支持哪些原.net framework的技术
(一).net Core的优点
1)支持独立部署,不互相影响
每个网站可以持不同的.net core版本,互不影响。
2)彻底模块化
3)没有历史包袱,运行效率高
4)不依赖于iis
自带一个迷你iis,对接反向代理
5)跨平台
6)符合现代理念:依赖注入、单元测试等
7)为云计算而生
(二).net core和.net framework不同
1)不支持:asp.net webforms, wcf服务端, WF,.net Remoting, appdomain
2) 部分windows-only的特性如果选择了就不能跨平台了。
这些特性包括:winfrom, wpf,注册表, event log, AD等。
(三)我的项目可以用.net core开发吗
1)旧.net framework项目没必要动
2)用到了.net core中不支持的特性的不能动
3)其它项目都可以用.net core,已经够成熟,社区也在全面转向.net core
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

