iT邦幫忙

0

Asp.net core 初學瓶頸

各位大大好:
目前在自學.net core,但發現才剛一踏入這個領域就困難重重,跟著版上的ASP.NET Core 2 系列 ,指令語言倒是沒問題,但進入了開始介紹.net core的內容時有點霧裡看花,
在之前跟著asp.net mvc的書籍實作,利用MVC也做出一些網站作品,本以為可以順著學習.net core的,但事情果然沒有那麼簡單...。
想請問各位大大,我應該多補充那些相關技能和知識比較好再銜接.net core呢?
再麻煩大大們回覆。

看更多先前的討論...收起先前的討論...
Linq 的話,對SQL語法熟悉會比較好上手。
話說ASP..我的網頁..只有IF FOR Response Request其他都是SQL查資料帶出...去達成@@"
網站HTML CSS Javascript弄好一點就好了...
w4560000 iT邦研究生 5 級 ‧ 2020-07-07 09:05:01 檢舉
應該說一下在哪邊卡關,大家比較能回答你
froce iT邦大師 1 級 ‧ 2020-07-07 09:10:26 檢舉
> IF FOR Response Request其他都是SQL查資料帶出

基本上哪個網頁系統不是這樣啦...XD
k2lairrol iT邦新手 5 級 ‧ 2020-07-07 09:22:10 檢舉
感謝大家的回覆! 目前跟著系列文章繼續看下去,發現有些跟asp.net MVC 功能相似,所以繼續跟著實作和練習,目前卡關的問題是前面的
程式生命週期 (Application Lifetime)、Middleware這些內容裡面的程式碼有些困惑,嘗試google資料發現中文看得懂但觀念不是很好理解,應該是我這方面基礎還不夠扎實,想再請問:這些觀念有什麼比較推薦的方法去了解嗎? 謝謝大家回覆
只是問學習資源,就不另開回答來賺點數了
關於Asp.net Core,邦友John Wu(同時也是微軟MVP)之前在鐵人賽有開一篇系列文章講解
這邊附上他的Blog
https://blog.johnwu.cc/
以及他的iT邦檔案
https://ithelp.ithome.com.tw/users/20107461/ironman/1372
另外如果是想研究Asp.net Core等微軟相關技術,可以去參考微軟MVP的部落格
Ex: 黑暗執行緒、保哥等
這些大神都浸淫在微軟技術已久,很多奇形怪狀的Bug他們都遇過,也懂得很多奇技淫巧,你的問題或許很多人寫過Blog了,如果真的還是不懂可以再另外在版上提問
fillano iT邦超人 1 級 ‧ 2020-07-07 10:19:40 檢舉
.net mvc一樣有生命週期,這是MVC架構設計需要理解的地方。(其實所有的framework都有生命週期,如果是一個web的框架,簡單說就是從request到response,會透過整個framework的哪些部分來進行,哪些部分有哪些方法可以設定、客製化等等)
k2lairrol iT邦新手 5 級 ‧ 2020-07-07 16:57:05 檢舉
感謝各位的分享和回覆,看來需要多找一些資料跟多實作來解決觀念不足的問題了!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

7
小碼農米爾
iT邦高手 1 級 ‧ 2020-07-08 23:58:43
最佳解答

這個故事要從 Webform 講起
我們先來了解一下最原始的 ASP.NET 管道模型

管道物件大致分為兩類

  • HttpHandler
  • HttpModule

HttpHandler:
主要處理程式邏輯的地方,同時也是管道的最後一關,整個管道中只能存在一個
例如: .ashx.aspx

HttpModule:
提供我們擴充模組的部分,可以在 Request 到達 Handler 前做些前置處理
例如: UrlRoutingModuleFormsAuthenticationModule

https://ithelp.ithome.com.tw/upload/images/20200708/20106865zhx1iXMqu7.jpg


到了 ASP.NET MVC 時代,還是使用這個管道模型
只是將 HttpHandler 擴充的更強大了

管道會使用 UrlRoutingModule 取得路由表
決定 Request 要交給 MvcHandler 處理還是 Webform

如果是交給 MvcHandler
接下來就會產生 Controller,執行 ActionFilters 等操作

以宏觀的角度來看,這些都還是屬於 HttpHandler 的範疇
所以 ASP.NET MVC 並沒有脫離原來的管道模型

https://ithelp.ithome.com.tw/upload/images/20200708/20106865Ty31VxGysG.jpg


接下來就來到了 .NET Core 時代
這是一個砍掉重練的時代,各種框架都在重寫中,所以還蠻亂的...

既然要砍,管道模型也不例外,一起被砍掉了
以前的 HttpHandlerHttpModule複雜的事件機制
被整合成了全新的 Middleware

雖然底層整個換掉
但管道的抽象概念還是不變
看圖會比較清楚

https://ithelp.ithome.com.tw/upload/images/20200708/20106865ysmjCtz6K6.jpg


最後來講 Application Lifetime

傳統的 ASP.NET Webform 和 MVC
都是透過 HttpApplication 啟動程式的 (Global.asax)
不過這樣有個缺點,程式必須依賴於 IIS 無法獨立運行

而 .NET Core 為了跨平台
必需讓 ASP.NET 和 IIS 脫鉤

所以改變了啟動方式
使用 Console Application 運行程式

而其中的 Application Lifetime 就相當於
以前 Global.asax 內的 Application_StartApplication_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)

k2lairrol iT邦新手 5 級 ‧ 2020-07-09 10:00:35 檢舉

非常感謝您的分享,受益良多!

我要發表回答

立即登入回答