请选择 进入手机版 | 继续访问电脑版

[ASP.NET] .Net Framework .Net  .NET Standard的概念及区别

[复制链接]
查看88 | 回复13 | 2021-9-15 06:27:39 | 显示全部楼层 |阅读模式
目次

.Net Framework .Net  .NET Standard的区别

一、.NET Framework

在将来 .NET Framework或许成为过去时,如今 还是有很多地方在利用 的。这一套体系对于做C#的老coder应该是再认识 不过了,新入坑的也就用不着费力去学习。

  1. <strong>.NET Framework </strong>是一种技术,支持生成和运行 Windows 应用及 Web 服务。
  2. <strong>.NET Framework</strong> 包括公共语言运行时 (CLR) 和 .NET Framework 类库。 公共语言运行时是 .NET Framework 的基础。
  3. 可将运行时看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。
复制代码

二、.Net

.net 就是由.net core 演进而来,在底层有很多性能和架构优化改造,上层应用api和用法和.NET Framework大多数雷同 。

  1. .NET 是一种用于构建多种应用的免费开源开发平台,使用 .NET 时,无论你正在构建哪种类型的应用(web,api、桌面应用...),代码和项目文件看起来都一样。 可以访问每个应用的相同运行时、API 和语言功能。
  2. NET 是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET 是 .NET Foundation 的项目。
  3. Microsoft 支持在 Windows、macOS 和 Linux 上使用 .NET。 它会定期更新以保证安全和质量。
  4. .NET 支持三种编程语言:C#、F#、Visual Basic。
复制代码

三、.NET Standard

  1. .NET Standard 是针对多个 .NET 实现推出的一套正式的 .NET API 规范。 推出 .NET Standard 的背后动机是要提高 .NET 生态系统中的一致性。 但是,.NET 5 采用不同的方法来建立一致性,这种新方法在很多情况下都不需要 .NET Standard。
复制代码

以是 .net standard 是 .Net Api 规范,不是实现。其作用是为了进步 .net 划一 性,只要框架支持就能利用 .net standard规范去实现。
但是!.NET 5 采用不同的方法来建立划一 性,也就是说.net 5 开始过度到.net 框架假如 你只是用于.net 框架的话,但是支持.net standard!(名字有点绕晕啊)
NET Standard并未弃用 对于可由多个 .NET 实现利用 的库,仍必要 .NET Standard。比如在 .NET Framework 和 .NET 上都要利用 的内库就必要 按照.net standard规范,如许 两个框架都能用,但是要看.net standard版本支持,下图对照。
在创建类库的时间 就可以选择不同的支持框架。

 

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

各种 .NET 实现以特定版本的 .NET Standard 为目标 。 每个 .NET 实现版本都会公布它所支持的最高 .NET Standard 版本,这种声明意味着它也支持从前 的版本。

 

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

三、现实 操作阐明

1、创建一个.NET Standard 类库,添加一个简单的测试方法。

  1. public class NetStandardTest
  2. {
  3. public static void PrintLocation()
  4. {
  5. //打印FileStream 路径
  6. Console.WriteLine(typeof(FileStream).Assembly.Location);
  7. //打印NetStandardTest 路径
  8. Console.WriteLine(typeof(NetStandardTest).Assembly.Location);
  9. }
  10. }
复制代码

在这个测试方法内里 我们加了两行打印代码。告急 是打印FileStream路径,同时我们创建的.NET Standard类库为2.0,由于 我们接下来要创建.net framework 的控制台,它不支持2.1。

2、创建.net 5,.net framework 4.6.1 控制台程序

创建好两个控制台项目,在主方法内里 调用内库方法。

  1. static void Main(string[] args)
  2. {
  3. NetStandardTest.PrintLocation();
  4. Console.ReadKey();
  5. }
复制代码

办理 方案布局 如下

 

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

3、运行分析

 

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

从结果 看我们看到同一个.NET Standard类库,引用在不同的框架上,调用同一个FileStream的地址是不一样的。
然后我们在.NET Standard类库内里 F12定位到FileStream看到程序集如下

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

三个地址我们并列对比下:

  1. C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.8\System.Private.CoreLib.dll
  2. C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll
  3. C:\Users\Administrator\.nuget\packages\netstandard.library\2.0.3\build\netstandard2.0\ref\netstandard.dll
复制代码

我们将三个dll 用dnspy反编译下,找到FileStream,任意 找一个BeginRead方法看下代码。

  • .net standard

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

  • .net framework

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

  • .net 5

.Net Framework .Net&nbsp;&nbsp;.NET Standard的概念及区别

从上面三个结果 对比可以看到.net standard内里 是没有实现的,只是定义了方法,也就是说定义了一种标准,阐明 我的类内里 有哪些东西。
调用的时间 再根据我们当前利用 的框架去找到对应框架的实现。这就是为什么.net standard能对多框架引用,也是为什么2.1不能被.net framework利用 ,由于 它没有去实现2.1新增的api。
至于为什么我们调用.net standard的dll会被转到对应框架的dll呢,这是利用 Type Forwarding方式实现跨程序集范例 转移的技术成为“垫片(Shim)”,这是实现程序集跨平台复用的告急 本领 。
关于这个垫片技术可以看下这篇文章https://www.cnblogs.com/artech/p/how-to-cross-platform-03.html。

以上就是.Net Framework .Net  .NET Standard的概念及区别的详细 内容,更多关于.Net Framework .Net  .NET Standard的区别的资料请关注脚本之家别的 干系 文章!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 123457505 | 2021-9-15 08:33:13 | 显示全部楼层
楼上是GG还是MM啊?
回复

使用道具 举报

avatar a18945178687 | 2021-9-20 06:46:44 | 显示全部楼层
我和我的小伙伴都惊呆了!
回复

使用道具 举报

avatar 张永峰 | 2021-9-21 18:47:10 | 显示全部楼层
信admin楼主,考试不挂科!
回复

使用道具 举报

avatar 123457352 | 2021-9-22 15:06:05 | 显示全部楼层
怎么我回帖都没人理我呢?
回复

使用道具 举报

avatar Lieutenant555 | 2021-9-26 20:00:44 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的源码论坛他的站点都是商业源码,还是免费下载的那种!特别好用。访问地址:http://www.mxswl.com 猫先森网络
回复

使用道具 举报

avatar 成都路人甲萌 | 2021-9-30 14:44:13 | 显示全部楼层
admin楼主的等级很高啊!
回复

使用道具 举报

avatar 海上灵光Y8 | 2021-10-4 07:03:11 | 显示全部楼层
支持一下,下面的保持队形!
回复

使用道具 举报

avatar 白云苍狗N | 2021-10-4 18:18:11 | 显示全部楼层
admin楼主人气很旺!
回复

使用道具 举报

avatar 务川冷泉水鱼庄 | 2021-10-5 01:14:05 | 显示全部楼层
在这个版块混了这么久了,第一次看见这么给你的帖子!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则