從 ASP.NET MVC 轉換到 ASP.NET Core 的那些事 (Migrate From ASP.NET MVC To ASP.NET Core)

2022-08-21

筆記 ASP.NET MVC 與 ASP.NET Core 的差異,作為評估專案開發架構選擇、從 ASP.NET MVC 遷移轉換 ASP.NET Core 的考量事項綜整。

logo

說明

Resource

ASP.NET MVC 發展沿革較久,中英文的學習素材較多,而 ASP.NET Core 則是新的架構,新的教學資源英文為主,但也因為 ASP.NET Core 的更新速度較為頻繁,很快教學資源就會顯得過時,因此在學習上的投入必須較多、所需具備的先備知識也較多 (DI, Kestrel, OWIN) 等。

考慮到 ASP.NET Core 的頻繁更新,即使是 LTS 的 Supports 也相當短,需要考量專案是否能夠配合頻繁的維護升級。

Config

在 ASP.NET MVC 使用 web.config、global.asax 進行應用系統的 Config 設定,但 ASP.NET Core 則改採用 appsettings.json。

Middleware

以往在 ASP.NET MVC 是使用 HTTP Moudle 以及 HTTP Handler 的觀念,到了 ASP.NET Core 則是使用 Middleware 來替代,架構上與 OWIN 以及 Katana 更為一致。

而以往在 IIS 上所支援的 Static File 處理,在 ASP.NET Core 中需要藉由 Middleware 的註冊來達成。

Route

在 ASP.NET MVC 是使用 Route Table 來設計 Controller 的路由,在 ASP.NET Core 則是使用 Route Attribute 的方式進行路由管理。

Logging

以往在 ASP.NET MVC 需藉由第三方的 Logging 套件來輔助,例如 NLog, Serilog 以及 log4net。但在 ASP.NET Core 除繼續使用上述套件外,也有原生的 Logging 機制可以使用 😁

Task Scheduler

在 ASP.NET MVC 使用工作排程器、Windows Service 以及 Hangfire 進行工作排程,但 ASP.NET Core 則多了本身作為 Hosted Service 整合排程的選擇,詳細可以參考黑大的分享 在 ASP.NET Core 網站執行定時排程

參考資料

.NET Framework與.NET Core差異

ASP.NET Core 2 系列 - ASP.NET Core vs ASP.NET MVC

ASP.NET Core 值得學嗎?

相關連結