Asp.net core實戰5: 專案檔案結構分析
1.專案檔案包括以下幾個部分:
根目錄是一個解決方案
Dependencies是依賴項檔案
Properties儲存 launchSetting.json,是涉及到如何編譯、執行專案的相關配置檔案
wwwroot是ASp.net core專案唯一可以被直接訪問的專案位置
Controllers、Models、Views是傳承了Asp.net 的傳統,MVC資料夾
appsettings.json用於配置專案的執行時等相關資訊
Program.cs及Startup.cs相當重要,後文詳細分析
2.詳解.csproj檔案
跟asp.net 專案相比,它的變化是,
不再含有guid了!
隱式檔案編譯,不需要一個個列舉出來!
無需提供路徑!
根節點<Project>向SDK指明,本專案是一個web專案。
<TargetFramework>是設定的目標Framework執行版本,我們執行在netcore2.0版本上,所以設定netcoreapp2.0,因為asp.net core專案也可以執行在.net framework上,如果你要執行在.net framework 4.6.1上,你可以直接改為net461
<PackageReference>是你所引入的NuGet包
最後是一些附加的工具
3.Asp.net core專案的Entry Point ---Program.cs檔案解析
實際上,Asp.net core Web應用程式最終是一個命令列程式,這也是Asp,net core能夠跨平臺的主要原因!(傳聞Asp.net core3.0版本將支援Winform及WPF,你覺得在Linux上能實現麼?那豈不是微軟實現桌面程式大一統了?!Winform和WPF能託管在命令列麼?顯然不現實了!)
Main函式直接呼叫BuildWebHost函式建立並配置託管程式了,最後直接啟動HTTP伺服器進行監聽,我們直接看下面的函式。
BuildWebHost使用了WebHostBuilder建立了一個配置了相關的託管資訊。CreateDefaultBuilder包含了很多預設的配置資訊。
UserStartup函式讓一些配置託管在了Startup.cs類中去配置了。
最後呼叫Build()配置完成。
基本上,Program.cs配置的是一些基礎的設定,包括日誌、應用配置、代理伺服器配置、根目錄配置、等等。
而涉及到的依賴注入,中介軟體及管道,MVC等相關配置都會在Startup.cs中進行配置
Program.cs基本上不怎麼變化,Startup需要很多的配置。
4.Asp.net core專案Startup.cs檔案解析
Startup.cs檔案主要完成兩個方面的配置:
在ConfigureServices()中配置你所提供的Service的註冊
在Configure()中配置MVC管道的相關配置
注:在ConfigureServices中配置的服務,在Configure中均可使用(這裡用到了反射的相關技術,也就是類似的DI)