ASP.NET Core 各版本特性簡單整理

前言

簡單整理了 ASP.NET Core 從1.0到5.0的變遷,不包括小版本, 內容主要來自 MS Docs。html

介紹

ASP.NET Core 是一個跨平臺的高性能開源框架,用於生成啓用雲且鏈接 Internet 的新式應用。 使用 ASP.NET Core,您能夠:git

  • 生成 Web 應用和服務、物聯網 (IoT)應用和移動後端。
  • 在 Windows、macOS 和 Linux 上使用喜好的開發工具。
  • 部署到雲或本地。
  • 在.NET Core上運行。

相關:在 ASP.NET 4.x 和 ASP.NET Core 之間進行選擇github

v1.0

Release Time:2016.6.27web

Release Note: https://github.com/dotnet/aspnetcore/releases/tag/1.0.0json

Announcing: https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-1-0/後端

v1.1

Release Time:2016.11.17api

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 的新增功能服務器

新增功能:

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 性能(經過改善鏈接池鎖的爭用)

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 序列化程序。
  • 減小了窗體分析的內存使用量並提升了其吞吐量。

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 性能改進、增長組件

  • gRPC 性能改進

  • 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 流)時,確保可行鏈接特別有用。
相關文章
相關標籤/搜索