激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - .Net Framework .Net .NET Standard的概念及區(qū)別

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

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

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

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

一、.NET Framework

在未來.NET Framework或許成為過去時(shí),目前還是有很多地方在使用的。這一套體系對(duì)于做C#的老coder應(yīng)該是再熟悉不過了,新入坑的也就用不著費(fèi)力去學(xué)習(xí)。

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

二、.Net

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

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

三、.NET Standard

.NET Standard 是針對(duì)多個(gè) .NET 實(shí)現(xiàn)推出的一套正式的 .NET API 規(guī)范。 推出 .NET Standard 的背后動(dòng)機(jī)是要提高 .NET 生態(tài)系統(tǒng)中的一致性。 但是,.NET 5 采用不同的方法來建立一致性,這種新方法在很多情況下都不需要 .NET Standard。

所以.net standard 是 .Net Api 規(guī)范,不是實(shí)現(xiàn)。其作用是為了提高.net 一致性,只要框架支持就能使用.net standard規(guī)范去實(shí)現(xiàn)。
但是!.NET 5 采用不同的方法來建立一致性,也就是說.net 5 開始過度到.net 框架如果你只是用于.net 框架的話,但是支持.net standard!(名字有點(diǎn)繞暈啊)
NET Standard并未棄用 對(duì)于可由多個(gè) .NET 實(shí)現(xiàn)使用的庫(kù),仍需要 .NET Standard。比如在 .NET Framework 和 .NET 上都要使用的內(nèi)庫(kù)就需要按照.net standard規(guī)范,這樣兩個(gè)框架都能用,但是要看.net standard版本支持,下圖對(duì)照。
在創(chuàng)建類庫(kù)的時(shí)候就可以選擇不同的支持框架。

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

各種 .NET 實(shí)現(xiàn)以特定版本的 .NET Standard 為目標(biāo)。 每個(gè) .NET 實(shí)現(xiàn)版本都會(huì)公布它所支持的最高 .NET Standard 版本,這種聲明意味著它也支持以前的版本。

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

三、實(shí)際操作說明

1、創(chuàng)建一個(gè).NET Standard 類庫(kù),添加一個(gè)簡(jiǎn)單的測(cè)試方法。

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

在這個(gè)測(cè)試方法里面我們加了兩行打印代碼。主要是打印FileStream路徑,同時(shí)我們創(chuàng)建的.NET Standard類庫(kù)為2.0,因?yàn)槲覀兘酉聛硪獎(jiǎng)?chuàng)建.net framework 的控制臺(tái),它不支持2.1。

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

創(chuàng)建好兩個(gè)控制臺(tái)項(xiàng)目,在主方法里面調(diào)用內(nèi)庫(kù)方法。

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

  Console.ReadKey();
}

解決方案結(jié)構(gòu)如下

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

3、運(yùn)行分析

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

從結(jié)果看我們看到同一個(gè).NET Standard類庫(kù),引用在不同的框架上,調(diào)用同一個(gè)FileStream的地址是不一樣的。
然后我們?cè)?NET Standard類庫(kù)里面F12定位到FileStream看到程序集如下

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

三個(gè)地址我們并列對(duì)比下:

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

我們將三個(gè)dll 用dnspy反編譯下,找到FileStream,隨便找一個(gè)BeginRead方法看下代碼。

  • .net standard

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

  • .net framework

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

  • .net 5

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

從上面三個(gè)結(jié)果對(duì)比可以看到.net standard里面是沒有實(shí)現(xiàn)的,只是定義了方法,也就是說定義了一種標(biāo)準(zhǔn),說明我的類里面有哪些東西。
調(diào)用的時(shí)候再根據(jù)我們當(dāng)前使用的框架去找到對(duì)應(yīng)框架的實(shí)現(xiàn)。這就是為什么.net standard能對(duì)多框架引用,也是為什么2.1不能被.net framework使用,因?yàn)樗鼪]有去實(shí)現(xiàn)2.1新增的api。
至于為什么我們調(diào)用.net standard的dll會(huì)被轉(zhuǎn)到對(duì)應(yīng)框架的dll呢,這是利用Type Forwarding方式實(shí)現(xiàn)跨程序集類型轉(zhuǎn)移的技術(shù)成為“墊片(Shim)”,這是實(shí)現(xiàn)程序集跨平臺(tái)復(fù)用的重要手段。
關(guān)于這個(gè)墊片技術(shù)可以看下這篇文章https://www.cnblogs.com/artech/p/how-to-cross-platform-03.html。

以上就是.Net Framework .Net  .NET Standard的概念及區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于.Net Framework .Net  .NET Standard的區(qū)別的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品wwww | 亚洲一区二区三区日本久久九 | 一级免费 | 黄色网址免费入口 | 最新在线中文字幕 | 日本在线视频二区 | 国产成人在线看 | 亚洲成人在线视频网 | 成人免费看片视频 | 久草在线资源福利站 | 久久精品av| 色柚视频网站ww色 | 国产精品久久国产精麻豆96堂 | 一级黄色a视频 | 亚洲国产超高清a毛毛片 | 蜜桃视频在线观看视频 | 免费看成人毛片 | 国产精品99久久久久久宅女 | 九九视屏| 色淫影院 | 免费在线观看成年人视频 | 91一区二区三区久久久久国产乱 | 91精品国产九九九久久久亚洲 | 久久午夜免费视频 | 日本在线不卡一区二区三区 | 黄色网址在线免费 | 激情在线观看视频 | 亚州综合图片 | 一区二区久久电影 | 精品一区二区视频在线观看 | 国产永久免费观看 | 男女亲热网站 | 国产91免费看 | 亚洲资源网 | 中文字幕国产一区 | 国产精品毛片无码 | 天天看成人免费毛片视频 | 麻豆蜜桃在线观看 | 毛片av网 | 免费毛片视频 | 深夜视频在线观看 |