各位大大好:
目前在自學.net core,但發現才剛一踏入這個領域就困難重重,跟著版上的ASP.NET Core 2 系列 ,指令語言倒是沒問題,但進入了開始介紹.net core的內容時有點霧裡看花,
在之前跟著asp.net mvc的書籍實作,利用MVC也做出一些網站作品,本以為可以順著學習.net core的,但事情果然沒有那麼簡單...。
想請問各位大大,我應該多補充那些相關技能和知識比較好再銜接.net core呢?
再麻煩大大們回覆。
這個故事要從 Webform 講起
我們先來了解一下最原始的 ASP.NET 管道模型
管道物件大致分為兩類
HttpHandler:
主要處理程式邏輯的地方,同時也是管道的最後一關,整個管道中只能存在一個
例如: .ashx
、.aspx
HttpModule:
提供我們擴充模組的部分,可以在 Request 到達 Handler 前做些前置處理
例如: UrlRoutingModule
、FormsAuthenticationModule
到了 ASP.NET MVC 時代,還是使用這個管道模型
只是將 HttpHandler 擴充的更強大了
管道會使用 UrlRoutingModule 取得路由表
決定 Request 要交給 MvcHandler 處理還是 Webform
如果是交給 MvcHandler
接下來就會產生 Controller
,執行 Action
、Filters
等操作
以宏觀的角度來看,這些都還是屬於 HttpHandler 的範疇
所以 ASP.NET MVC 並沒有脫離原來的管道模型
接下來就來到了 .NET Core 時代
這是一個砍掉重練的時代,各種框架都在重寫中,所以還蠻亂的...
既然要砍,管道模型也不例外,一起被砍掉了
以前的 HttpHandler
、HttpModule
、複雜的事件機制
被整合成了全新的 Middleware
雖然底層整個換掉
但管道的抽象概念還是不變
看圖會比較清楚
最後來講 Application Lifetime
傳統的 ASP.NET Webform 和 MVC
都是透過 HttpApplication 啟動程式的 (Global.asax
)
不過這樣有個缺點,程式必須依賴於 IIS 無法獨立運行
而 .NET Core 為了跨平台
必需讓 ASP.NET 和 IIS 脫鉤
所以改變了啟動方式
使用 Console Application 運行程式
而其中的 Application Lifetime 就相當於
以前 Global.asax 內的 Application_Start
和 Application_End
讓我們處理程式啟動和結束時要執行的動作
學習方面,其實我們只要了解抽象概念就好
要用的時候再去 Google 細節
可以發現,其實從 Webform 到 .NET Core
管道的概念並沒有改變很多 ((恩...就是整個砍掉而已...Σ( ° △ °|||)
但程式卻相差很多
如果硬記程式
面對如此頻繁的改版會學的很辛苦
但如果能以宏觀的角度學習
會發現其實抽象概念都差不多
也不必擔心未來如果大改版
同樣的情況會再次發生
大改版雖然很痛苦
但這些也是不可避免的
程式日新月異,唯有快速的改版,才能持續進步
最後祝你學習順利。 ╰ ( ´ ▽ ` ) ╯
[1] 基於asp.net MVC 應用程式的生命週期(詳解)
[2] [netCore] MiddleWare
[3] [Day08] 揭密Mvc使用IHttpHandler by UrlRoutingModule-4.0
[4] [Day02] ASP.NET Core 2 系列 - 程式生命週期 (Application Lifetime)