在ASP.NET Core專案中,我們使用一個叫做Microsoft.AspNetCore.App的綜合包。它也被稱為ASP.NET Core Shared Framework,在ASP.NET Core Shared Framework之中包含了很多依賴項,它能滿足一般應用的需求。但是如果你檢視它的依賴項,在ASP.NET Core3.0中它的需求在似乎變得寬鬆了。
當前版本的Microsoft.AspNetCore.App明確列出了150個依賴項,而7個月前的版本只需要144個。在這些包中,你能發現九種認證相關的包,他們分別是
- Cookies
- JwtBearer
- Microsoft Account
- OAuth
- OpenIdConnect
- WsFederation
- Microsoft.AspNetCore
- Microsoft.AspNetCore.Mvc
- Microsoft.AspNetCore.HttpsPolicy
你還能發現8個關於EFCore With SQL Server的支援包,一個用於SQL Server快取的類庫,一個EFCore診斷包,一個用於EFCore標識包等等。
在這150項依賴中,31項將被從ASP.NET Core3.0的Shared Framework中移除出去,由於它們不符合如下的新的入選標準。
(1) 依賴了Shared Framework無法提供服務的第三方程式碼
(2) 程式集本身被Shared Framework所拋棄
(3) 他們實現的協議或身份認證機制十分容易發生變化(比如Facebook/Google/Twitter可能能回在明天改變它們身份認證的方式)
ASP.NET Core專案的高階工程師Nate McMaster說:“我們在2.0版本中加入了太多東西,我們正在重新調整,我們的標的是在可以預見的的時間內,這些元件是可以維護的。許多從Microsoft.AspNetCore.App中移除的程式集將以NuGet 包來提供。如果我們發現90%的人取用了相同的包,那麼這個包將有可能被納入到Shared Framework中。然而,正如在指導檔案中指出的那樣,API的使用量雖然是一項重要指標,但並不是我們考慮的唯一因素。“。
這將對現有專案有何影響?
如果你決定升級到ASP.NET Core3.0,並且在你的專案中取用了被Shared Framework排除的包,那麼你的應用將會崩潰。但是別擔心,解決這個問題只需要像使用其他NuGet 包一樣手動新增這些包到你的專案中。
專案中需要哪些包呢?
這個問題問題的答案取決於你的專案型別。如果你的專案是一個REST服務,你只需要取用下麵三個包
在Microsoft.AspNetCore中有18個直接的依賴項,Mvc中添加了13個依賴項,HttpsPolicy添加了5個。這些數字雖然不包括重覆或者間接依賴,它卻反映了Shared Framework擁有更少的依賴,我們的依賴管理將變得更加簡單。