一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .Net Framework .Net .NET Standard的概念及區別

.Net Framework .Net .NET Standard的概念及區別

2021-12-16 15:00SunSpring ASP.NET教程

這篇文章主要介紹了.Net Framework .Net .NET Standard的概念及區別,需要的朋友可以參考下

.Net Framework .Net .NET Standard的區別

一、.NET Framework

在未來.NET Framework或許成為過去時,目前還是有很多地方在使用的。這一套體系對于做C#的老coder應該是再熟悉不過了,新入坑的也就用不著費力去學習。

.NET Framework 是一種技術,支持生成和運行 Windows 應用及 Web 服務。
.NET Framework 包括公共語言運行時 (CLR) 和 .NET Framework 類庫。 公共語言運行時是 .NET Framework 的基礎。
可將運行時看作一個在執行時管理代碼的代理,它提供內存管理、線程管理和遠程處理等核心服務,并且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。

二、.Net

.net 就是由.net core 演進而來,在底層有很多性能和架構優化改造,上層應用api和用法和.NET Framework大多數相同。

.NET 是一種用于構建多種應用的免費開源開發平臺,使用 .NET 時,無論你正在構建哪種類型的應用(web,api、桌面應用...),代碼和項目文件看起來都一樣。 可以訪問每個應用的相同運行時、API 和語言功能。
NET 是開放源代碼,使用 MIT 和 Apache 2 許可證。 .NET 是 .NET Foundation 的項目。
Microsoft 支持在 Windows、macOS 和 Linux 上使用 .NET。 它會定期更新以保證安全和質量。
.NET 支持三種編程語言:C#、F#、Visual Basic。

三、.NET Standard

.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 .NET Standard的概念及區別

各種 .NET 實現以特定版本的 .NET Standard 為目標。 每個 .NET 實現版本都會公布它所支持的最高 .NET Standard 版本,這種聲明意味著它也支持以前的版本。

.Net Framework .Net .NET Standard的概念及區別

三、實際操作說明

1、創建一個.NET Standard 類庫,添加一個簡單的測試方法。

public class NetStandardTest
{
  public static void PrintLocation()
  {
      //打印FileStream 路徑
      Console.WriteLine(typeof(FileStream).Assembly.Location);
      //打印NetStandardTest 路徑
      Console.WriteLine(typeof(NetStandardTest).Assembly.Location);
  }
}

在這個測試方法里面我們加了兩行打印代碼。主要是打印FileStream路徑,同時我們創建的.NET Standard類庫為2.0,因為我們接下來要創建.net framework 的控制臺,它不支持2.1。

2、創建.net 5,.net framework 4.6.1 控制臺程序

創建好兩個控制臺項目,在主方法里面調用內庫方法。

static void Main(string[] args)
{
  NetStandardTest.PrintLocation();

  Console.ReadKey();
}

解決方案結構如下

.Net Framework .Net .NET Standard的概念及區別

3、運行分析

.Net Framework .Net .NET Standard的概念及區別

從結果看我們看到同一個.NET Standard類庫,引用在不同的框架上,調用同一個FileStream的地址是不一樣的。
然后我們在.NET Standard類庫里面F12定位到FileStream看到程序集如下

.Net Framework .Net .NET Standard的概念及區別

三個地址我們并列對比下:

C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.8\System.Private.CoreLib.dll
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll
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 .NET Standard的概念及區別

  • .net framework

.Net Framework .Net .NET Standard的概念及區別

  • .net 5

.Net Framework .Net .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的區別的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/SunSpring/p/15047424.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一区二区三区四区视频 | 精品国产日韩一区三区 | 久久精品人人做人人爽97 | 欧美一级特黄特色大片免费 | 爽好舒服快想要免费看 | 国产精品网页 | hd最新国产人妖ts视频 | 成人观看免费观看视频 | 99精品国产成人一区二区 | 被18号每天强行榨干acg | 男女操bb | 农村老妇1乱69系列小说 | 高清一级片 | 国产在视频线在精品 | 美女私人影院 | 亚洲色图2| 韩国甜性涩爱免费观看 | 亚洲咪咪 | 日本黄色一区 | 北岛玲在线视频 | 欧美xxxxx69 | 韩国甜性涩爱免费观看 | 国产51| 91久久精品视频 | 欧美日韩在线成人看片a | 男女做受快插大片 | 四虎影视色费永久在线观看 | 午夜一级毛片看看 | 国产午夜亚洲精品一区网站 | 亚洲九九爱 | 第一次破女视频国产一级 | 国产男技师 | 天天干女人 | 黑人又大又硬又粗再深一点 | 强插美女 | 欧美高清片 | 免费在线视频观看 | 暖暖 免费 高清 日本 在线 | 国产资源视频在线观看 | 小寡妇好紧进去了好大看视频 | 美女脱了内裤让男桶爽 |