前言
簡單整理了 ASP.NET Core 從1.0到5.0的變遷,不包括小版本, 內容主要來自 MS Docs。
介紹
ASP.NET Core 是一個跨平台的高性能開源框架,用於生成啟用雲且連接 Internet 的新式應用。 使用 ASP.NET Core,您可以:
- 生成 Web 應用和服務、物聯網 (IoT)應用和移動后端。
- 在 Windows、macOS 和 Linux 上使用喜愛的開發工具。
- 部署到雲或本地。
- 在.NET Core上運行。
相關:在 ASP.NET 4.x 和 ASP.NET Core 之間進行選擇

v1.0
Release Time:2016.6.27
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/1.0.0
Announcing: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-1-0/
v1.1
Release Time:2016.11.17
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/1.1.0
Announcing: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-1-1/
Docs: ASP.NET Core 1.1 的新增功能
新增功能:
- URL 重寫中間件
- 響應緩存中間件
- 查看組件即標記幫助程序
- MVC 型中間件篩選器
- 基於 Cookie 的 TempData 提供程序
- Azure App Service 日志記錄提供程序
- Azure Key Vault 配置提供程序
- Azure 和 Redis 存儲數據保護密鑰存儲庫
- 適用於 Windows 的 WebListener 服務器(注:指 HTTP.sys 服務器)
- WebSockets 支持
v2.0
Release Time:2017.8.14
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/2.0.0
Announcing: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-2-0/
Docs: ASP.NET Core 2.0 中的新增功能
新增功能:
- Razor Pages
- ASP.NET Core 元包(注:即Microsoft.AspNetCore.All ,我喜歡稱作全家桶,作用就是一把梭給你全部引用了相關的包,不用你發現沒有的時候自己去找,方便是方便,就是把一堆沒用到的也給引用了,項目加載速度也會受到影響)
- .NET Standard 2.0
- SPA 模板
- Kestrel 改進(添加大量服務器約束配置選項)
- WebListener 重命名為 HTTP.sys
- 默認啟用防跨站請求攻擊(CSRF)
- Razor 視圖預編譯
- Razor 支持 C# 7.1
v2.1
Release Time:2018.5.31
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/2.1.0
Announcing: https://devblogs.microsoft.com/aspnet/asp-net-core-2-1-0-now-available/
Docs: ASP.NET Core 2.1 的新增功能
新增功能
- SignalR(已針對 ASP.NET Core 2.1 重新編寫 SignalR:新 JavaScript 客戶端不具有 jQuery 依賴項,新緊湊型二進制協議基於 MessagePack等)
- Razor 類庫(Razor Class Library)
- Identity UI 庫
- HTTPS
- GDPR(注:剛出來時,很多人發現Cookie寫入不了就是因為開啟了它)
- 集成測試
- [ApiController], ActionResult
(注:ApiController 特性自帶了請求內容驗證攔截,這個當初也是坑了不少人,就我自己而言在實際使用中是將它關閉的,對於參數驗證處理邏輯自己有一套邏輯) - IHttpClientFactory(注:官方出品,解決 HttpClient new多了,TIME_AWAIT 問題)
- Kestrel 默認傳輸不再基於 Libuv,而是基於托管的套接字
- 通用主機(注:即 HostBuilder ,在此時 ASP.NET Core 默認還是用的 WebHostBuilder,HostBuilder 可以用在不需要 ASP.NET Core ,但是又想使用 ASP.NET Core 的依賴注入,日志,配置等組件的項目)
v2.2
Release Time:2018.12.5
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/2.2.0
Announcing: https://devblogs.microsoft.com/aspnet/asp-net-core-2-2-available-today/
Docs: ASP.NET Core 2.2 的新增功能
新增功能:
- 端點路由(Endpoint Routing)
- 健康檢查(HealthCheck)
- HTTP/2
- IIS 進程內承載
- SignalR Java 客戶端
- CORS 改進
- 響應壓縮(ASP.NET Core 2.2 可以使用 Brotli 壓縮格式來壓縮響應。)
- 提升 HttpClient 性能(通過改善連接池鎖的爭用)
注:.NET Core 2.2 新增了一個 startup hook 功能 https://github.com/dotnet/core-setup/blob/master/Documentation/design-docs/host-startup-hook.md
v3.0
Release Time:2019.9.24
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/v3.0.0
Announcing: https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0/
Docs: ASP.NET Core 3.0 的新增功能
新增功能:
- Blazor Server
- Blazor WebAssembly
- Razor 組件
- gRPC
- ASP.NET Core 和 SignalR 默認使用 System.Text.Json 來進行序列化
- ASP.NET Core 中默認不再使用 WebHostBuilder ,而是使用 HostBuilder(可以更好地將 ASP.NET Core 應用與非 Web 特定的其他服務器方案集成)
- Startup 類構造方法注入類型更改,只支持:IHostEnvironment,IWebHostEnvironment,IConfiguration
- 默認情況下啟用 HTTP/2
- Kestrel:默認情況下禁用
AllowSynchronousIO(同步IO),線程不足會導致應用崩潰,而同步 I/O API(例如HttpRequest.Body.Read)是導致線程不足的常見原因 - 根據請求提供事件計數器
- 增強了端點路由,可以讓框架(例如 MVC)與中間件配合使用
- ASP.NET Core 3.0 僅在 .NET Core 3.0 上運行(不再支持.NET Framework)
- 切換到 Newtonsoft.Json 需要自行安裝依賴
性能改進
ASP.NET Core 3.0 包含了許多改進,可減少內存使用量並提高吞吐量:
- 降低了使用內置的依賴項注入容器來實現作用域服務時的內存使用量。
- 減少跨框架的分配,包括中間件方案和路由。
- 降低了 WebSocket 連接的內存使用量。
- 減少 HTTPS 連接的內存使用量並提高了其吞吐量。
- 新的優化和完全異步 JSON 序列化程序。
- 減少了窗體分析的內存使用量並提高了其吞吐量。
注:.NET Core 3.0 增加了 Winform 和 WPF 但在此時 Winform 的設計器還是預覽版
v3.1
Release Time:2019.12.4
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/v3.1.0
Announcing: https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-1/
Docs: ASP.NET Core 3.1 的新增功能
新增功能:
-
Razor 組件的分部類支持
-
HTTP.sys 中對共享隊列的支持
-
SameSite cookie(這可能會影響 AzureAd、OpenIdConnect 或 WsFederation 等身份驗證場景)
-
Blazor 各種功能增強
v5.0
Release Time:2020.11.11
Release Note: https://github.com/dotnet/aspnetcore/releases/tag/v5.0.0
Announcing: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-in-net-5/
Docs: ASP.NET Core 5.0 的新增功能
新增功能:
-
ASP.NET Core MVC 和 Razor 改進
-
OpenAPI 規范默認開啟
-
Blazor 性能改進、增加組件
-
SignalR 增加 Hub Filter,類似於 MVC Filter。支持並行調用,允許客戶端一次調用多個Hub方法
-
自定義處理授權失敗,使用由授權中間件調用的新 IAuthorizationMiddlewareResultHandler 接口可以更輕松地自定義處理授權失敗
-
使用端點路由時的授權
-
Linux 上的 Kerberos 身份驗證和 LDAP 的基於角色的訪問控制
-
對 ASP.NET Core 項目運行 dotnet watch 將啟動默認瀏覽器,並在對代碼進行更改時自動刷新瀏覽器
-
控制台記錄器格式化程序
-
JSON Console Logger
性能改進
- 顯著減少了 HTTP/2 代碼路徑中的分配。
- 支持 Kestrel 中的 HTTP/2 響應標頭的 HPack 動態壓縮。 有關詳細信息,請參閱標頭表大小和 HPACK:HTTP/2 的靜默殺手鐧。
- 發送 HTTP/2 PING 幀:HTTP/2 有一種機制,用於發送 PING 幀以確保空閑連接仍然正常工作。 當使用經常空閑但僅可間歇查看活動的長生存期流(例如,gRPC 流)時,確保可行連接特別有用。
注:關於 .NET 5 命名 https://docs.microsoft.com/zh-cn/dotnet/core/dotnet-five
