日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 5 的重大改变:消失的历史技术

發(fā)布時(shí)間:2023/12/4 asp.net 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 5 的重大改变:消失的历史技术 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在本文中,我們將回顧一些未能進(jìn)入.NET Core 的歷史性.NET 技術(shù)。有趣之處在于,這些技術(shù)的 API 被復(fù)制過來了,這暗示著微軟當(dāng)時(shí)在考慮將來在.NET Core 中對它們進(jìn)行實(shí)現(xiàn)。

全局程序集緩存

全局程序集緩存(GAC)背后的理論是,所有.NET 庫都可以存儲在單個集中的位置。在這種方式下,它與COM庫類似。但與 COM 不同的是,它可以存儲每個庫的多個版本。通過這種方式,微軟希望可以避免困擾 90 年代應(yīng)用程序的“DLL 地獄”情景。

但是,版本問題仍然存在。此外,獲得代碼簽名證書的需要以及 Windows Vista 帶來的安全性的增加使得 GAC 成為一項(xiàng)令人討厭的技術(shù)。到.NET 4.5 發(fā)布時(shí),幾乎沒有應(yīng)用程序?qū)?GAC 用于非微軟庫。主要的例外是商業(yè)庫,但即使是這些庫也已經(jīng)轉(zhuǎn)向了對 NuGet 更友好的交付模型。

因此,也就不奇怪,微軟在.NET Core 中從根本上改變了他們的哲學(xué)。在新模型中,所有庫依賴項(xiàng)都與應(yīng)用程序一起部署,從而使得應(yīng)用程序可以與其他.NET Core 應(yīng)用程序隔離開來。因此,.NET Core 中沒有 GAC 的概念。

盡管如此,GAC API 在.NET Core 中仍然存在。它們所做的事情不多,例如,指示程序集是否在 GAC 中的屬性被硬編碼為返回 false。

為了進(jìn)一步明確意圖,所有的 GAC API 現(xiàn)在都被標(biāo)記為已過時(shí),微軟正考慮在未來的版本中刪除它們。

Remoting

.NET Remoting是受DCOM和Java Remoting(Java RMI)的啟發(fā)。這三種方法的基本思想都是一個應(yīng)用程序可以使用代理對象來操作在另一個應(yīng)用程序中運(yùn)行的真實(shí)對象。雖然它在技術(shù)上可以工作,但.NET Remoting 從來就沒有流行過,因?yàn)橐_地使用它很難,而且人們一般認(rèn)為它很脆弱。

考慮到這一點(diǎn),.NET Core 從未實(shí)現(xiàn)過.NET Remoting API。就像 GAC API 一樣,它只有不可操作的占位符。因此,它們也被標(biāo)記為已過時(shí),而最終目的是將其刪除。

代碼訪問安全

繼續(xù)這個主題,代碼訪問安全(CAS)是另一種 API 被復(fù)制到.NET Core 中,但被標(biāo)記為已過時(shí)的.NET Framework 技術(shù)。

代碼訪問安全創(chuàng)建于 Docker 等隔離容器之前。在.NET Framework 時(shí)代,多個應(yīng)用程序會托管在單個 Internet Information Server(IIS)實(shí)例中。理論上,每個應(yīng)用程序都將被隔離到一個單獨(dú)的應(yīng)用程序域中,但要打破這種隔離并干擾在 IIS 中運(yùn)行的其他應(yīng)用程序并不難。

代碼訪問安全的創(chuàng)建就是為了限制這種可能的損害。其基本思想是,危險(xiǎn)的 API 會被加上表示風(fēng)險(xiǎn)的屬性。IIS 之類的主機(jī)可以配置為運(yùn)行具有不同“信任”級別的應(yīng)用程序,從理論上講,是將它們放入一個沙箱中。

CAS 的另一個用途是用于瀏覽器托管的應(yīng)用程序。早在 Silverlight 出現(xiàn)之前,就已經(jīng)可以在 Internet Explorer 中運(yùn)行 Windows 窗體應(yīng)用程序了。應(yīng)用程序的信任級別部分取決于它是從哪里加載的,內(nèi)部站點(diǎn)會獲得更高的權(quán)限。

但是和許多早期的.NET 技術(shù)一樣,要正確地實(shí)現(xiàn) CAS 很困難。惡意應(yīng)用程序有許多方法可以繞過 CAS 限制,而良性應(yīng)用程序卻常常為這些限制所限。結(jié)果,瀏覽器托管的應(yīng)用程序很快就把它禁用了,而 IIS 在很大程度上忽略了 CAS 信任級別。

Thread.Abort

這可能會令你感到驚訝。Thread.Abort在.NET Core 中從未實(shí)現(xiàn)過。雖然它總是被認(rèn)為有危險(xiǎn),但總也不可避免。在 ASP.NET 中,像請求超時(shí)或客戶端斷開連接這樣簡單的事情就會觸發(fā)一個Thread.Abort調(diào)用。如果你沒有認(rèn)真地編寫代碼進(jìn)行處理,這可能會導(dǎo)致資源泄漏,比如獲取的鎖或打開的數(shù)據(jù)庫事務(wù)。

到 ASP.NET Core 被創(chuàng)建時(shí),CancellationToken已成為一個安全且被廣泛接受的Thread.Abort替代者,因此就不需要在.NET Core 的第一個版本中實(shí)現(xiàn)它了。盡管.NET Core 已經(jīng)將其功能擴(kuò)展到 Web 站點(diǎn)之外,但其他主要的應(yīng)用程序框架都不需要Thread.Abort,因此它會繼續(xù)拋出PlatformNotSupportedException。

在.NET 5 中,該方法終被標(biāo)記為已過時(shí)。

原文鏈接:https://www.infoq.cn/article/5McxpFwRxeKGeiBfTKPy

總結(jié)

以上是生活随笔為你收集整理的.NET 5 的重大改变:消失的历史技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。