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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 韩国三级在线观看 完整版 韩国三级视频网站 | 变态 另类 国产 亚洲 | 国产精品一在线观看 | 韩日视频在线 | 久久国产主播福利在线 | 秋霞色 | 四虎精品在线观看 | 国产偷啪 | 32pao强力打造免费高速高清 | 色呦呦在线免费观看 | 青青草原免费在线视频 | 精品一区二区视频 | 久99视频精品免费观看福利 | 日本特级a禁片在线播放 | 无套插入 | 狐媚小说 | 激情文学综合网 | 国产啪精品视频网给免丝袜 | 国产午夜亚洲精品不卡 | 九九热这里只有精品2 | 国产一卡二卡3卡4卡更新 | www.av免费 | 亚洲va久久久久 | 放荡女小洁的性日记 | 欧美日韩在线一区二区三区 | 女教师被学生糟蹋三天 | 蘑菇香蕉茄子绿巨人丝瓜草莓 | 国产成人免费视频 | 日本一区二区三区国产 | 天天做天天爽天天谢 | 色老板最新网站视频地址 | 国产精品主播在线 | 精品在线免费观看视频 | coolgay男男gayxxx chinese壮直男gay老年人 chinese野外gay军人 | 4hu影院在线观看 | 国产一区国产二区国产三区 | 国产成人综合视频 | 久久久免费热线精品频 | chaopeng在线视频进入 | 996免费视频国产在线播放 | 亚洲99久久无色码中文字幕 |