欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net Framework .Net  .NET Standard的概念及區(qū)別

 更新時間:2021年09月10日 09:43:14   作者:SunSpring  
這篇文章主要介紹了.Net Framework .Net .NET Standard的概念及區(qū)別,需要的朋友可以參考下

.Net Framework .Net  .NET Standard的區(qū)別

一、.NET Framework

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

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

二、.Net

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

.NET 是一種用于構建多種應用的免費開源開發(fā)平臺,使用 .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 規(guī)范。 推出 .NET Standard 的背后動機是要提高 .NET 生態(tài)系統(tǒng)中的一致性。 但是,.NET 5 采用不同的方法來建立一致性,這種新方法在很多情況下都不需要 .NET Standard。

所以.net standard 是 .Net Api 規(guī)范,不是實現。其作用是為了提高.net 一致性,只要框架支持就能使用.net standard規(guī)范去實現。
但是!.NET 5 采用不同的方法來建立一致性,也就是說.net 5 開始過度到.net 框架如果你只是用于.net 框架的話,但是支持.net standard?。钟悬c繞暈?。?br /> NET Standard并未棄用 對于可由多個 .NET 實現使用的庫,仍需要 .NET Standard。比如在 .NET Framework 和 .NET 上都要使用的內庫就需要按照.net standard規(guī)范,這樣兩個框架都能用,但是要看.net standard版本支持,下圖對照。
在創(chuàng)建類庫的時候就可以選擇不同的支持框架。

 

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

 

三、實際操作說明

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

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

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

2、創(chuàng)建.net 5,.net framework 4.6.1 控制臺程序

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

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

    Console.ReadKey();
}

解決方案結構如下

 

3、運行分析

 

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

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

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 5

從上面三個結果對比可以看到.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的概念及區(qū)別的詳細內容,更多關于.Net Framework .Net  .NET Standard的區(qū)別的資料請關注腳本之家其它相關文章!

相關文章

  • .NET6新特性之 隱式命名空間引用

    .NET6新特性之 隱式命名空間引用

    本文給大家分享的是 .NET6特新 隱式命名空間引用,如果我們要在新加一個命名空間的引用,可以在項目文件中配置增加<Using Include="命名空間"/>,如果需要移除一個命名空間可以這么做<Using Remove="命名空間"/>,下面來看看文章詳細介紹內容吧,需要的朋友可以參考一下
    2021-11-11
  • .Net Core 之AutoFac的使用

    .Net Core 之AutoFac的使用

    本文簡單介紹了AutoFac的基本使用以及在asp .net core中的應用,文中通過代碼講解相關知識非常的詳細,對大家的學習或工作都很有幫助,感興趣的小伙伴可以參考一下這篇文章
    2021-09-09
  • ASP.NET學習中常見錯誤總結歸納

    ASP.NET學習中常見錯誤總結歸納

    這篇文章主要介紹了asp.net學習過程中碰到的常見錯誤的解決方法,通讀本篇對大家的學習或工作具有一定的價值,需要的朋友可以參考下
    2021-09-09
  • ASP.NET常用代碼

    ASP.NET常用代碼

    ASP.NET常用代碼...
    2006-06-06
  • ASP.NET?Core?6最小API中使用日志和DI示例詳解

    ASP.NET?Core?6最小API中使用日志和DI示例詳解

    這篇文章主要為大家介紹了ASP.NET?Core?6最小API中使用日志和DI示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 在NET?Core?中獲取?CPU?使用率

    在NET?Core?中獲取?CPU?使用率

    這篇文章我們分享一種如何在?.NETCore?中獲取?CPU使用率的方法,?它所報告的這個值和?任務管理器?中報告的?CPU?使用值?差不多是一致的,下面來看看文中的具體詳細介紹吧
    2022-01-01
  • ASP遺留的二十個積習

    ASP遺留的二十個積習

    ASP遺留的二十個積習
    2006-07-07
  • 使用.NET6實現動態(tài)API

    使用.NET6實現動態(tài)API

    本文詳細講解了使用.NET6實現動態(tài)API,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Oracle中TO_DATE格式介紹

    Oracle中TO_DATE格式介紹

    Oracle中TO_DATE格式介紹;可供需求的朋友參考
    2012-11-11
  • .Net Framework .Net  .NET Standard的概念及區(qū)別

    .Net Framework .Net .NET Standard的概念及區(qū)別

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

最新評論