新的 ASP.NET Core 專案使用名為Microsoft.AspNetCore.App的綜合包。該包也可以稱為“ASP.NET Core 共享框架”,其背後的基本思想是,包括一個典型的應用程式所需要的所有東西。但是,如果看看該包的依賴項,對“需要”的定義看起來相當寬鬆。
目前,Microsoft.AspNetCore.App 擁有 150 個明確列出的依賴項,7 個月前則是 144 項。其中有 9 個不同的認證提供程式包。
- Cookies
- JwtBearer
- Microsoft Account
- OAuth
- OpenIdConnect
- WsFederation
還可以發現 8 個用於支援物體框架核心(Entity Framework Core)的包,其擁有 SQL Server、SQL Server 快取庫、用於診斷的 EF 核心包、用於標識的 EF 核心包等等。
從這 150 個依賴項串列中,31 個將從 ASP.NET Core 3.0 的共享框架中刪去,因為它們違反了新的納入標準:
(1) 依賴我們無法提供服務的第三方程式碼
(2) 元件本身在 3.0 中被棄用
(3) 它們實施的協議或身份驗證機制極易發生變化(比如,臉書 / 谷歌 / 推特轉天就可以決定改變授權的工作方式)
ASP.NET Core 專案的高階軟體工程師 Nate McMaster 接著說:
我們在 2.0 中添加了太多東西,我們正在重新調整以適應我們認為在可預見的道路上可維護的一套東西。大多數從 Microsoft.AspNetCore.App 中刪除的元件仍將作為 NuGet 包提供給大家。如果我們將來發現 90% 的客戶都取用同樣的包,那麼該包將成為共享框架一個很好的候選項。但是,正如在指導檔案中所提到的,API 的使用量是一個重要指標,但不是我們唯一考慮的因素。
對目前的專案有什麼影響?
如果你決定升級到 ASP.NET Core 3.0,再使用任何不在共享框架中的包的話應用程式將會崩潰。但是,要修複也很簡單,只需要把被排除的包手動新增到你的工程中即可,就像新增任何其他 Nuget 樣式的依賴項一樣。
我實際需要什麼包?
這個問題的答案取決於你的應用程式實際執行的操作。但是,如果我們只考慮一個簡單的 REST 伺服器,那麼只需要直接取用這三個包:
- Microsoft.AspNetCore
- Microsoft.AspNetCore.Mvc
- Microsoft.AspNetCore.HttpsPolicy
其中的第一個是 Microsoft.AspNetCore,它有 18 個直接依賴項。Mvc 添加了自己的 13 個依賴項,HttpsPolicy 添加了另外 5 個。這個數字不包括重疊或間接的依賴項,但是,仍然反映了一組更小更易管理的依賴項。
原文地址:https://www.infoq.cn/article/vwCKd8jFjAh*WAPNQxmJ