1. 程式人生 > >Asp.net core實戰5: 專案檔案結構分析

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)