在這個系列文章 由專案範本來理解與學習 ASP.NET Core 架構 中,將會透過 Visual Studio 2022 內建的幾個專案範本所產生的程式碼,了解 ASP.NET Core 7 的運作方式與在這些專案中的差異在哪裡?
- 1. 由 ASP.NET Core 空白專案範本來理解與學習 ASP.NET Core
- 2. 由 ASP.NET Core Web API 專案範本來理解與學習 ASP.NET Core
- 3. 由 ASP.NET Core 應用程式 (Model-View-Controller) 專案範本來理解與學習 ASP.NET Core
對於更多關於 ASP.NET Core 7 的說明內容,可以參考 ASP.NET Core 基本概念的概觀
首先先來建立一個 ASP.NET Core 空白專案,請依照底下說明來建立這個專案
打開 Visual Studio 2022 IDE 應用程式
從 [Visual Studio 2022] 對話窗中,點選右下方的 [建立新的專案] 按鈕
在 [建立新專案] 對話窗右半部
- 切換 [所有語言 (L)] 下拉選單控制項為 [C#]
- 切換 [所有專案類型 (T)] 下拉選單控制項為 [Web]
在中間的專案範本清單中,找到並且點選 [空的 ASP.NET Core] 專案範本選項
點選右下角的 [下一步] 按鈕
在 [設定新的專案] 對話窗
點選右下角的 [下一步] 按鈕
請點選右下角的 [建立] 按鈕
完成專案創建之後,將會看到 Visual Studio 2022 將這個新專案開啟,從 [方案總管] 視窗內,可以看到這個專案內所建立的檔案
首先,按下 F5 看看這個專案的執行結果會呈現甚麼樣貌
在 Visual Studio 2022 應用程式的上方,將會看到一個綠色三角形,請點選該綠色三角形右方的 白色 向下白色三角型,此時,將會彈出一個子功能表,從這裡可以選取要使用哪種方式來執行這個專案。
可以看到,預設會採用 HTTPS 方式來執行這個 Web 專案,當然也可以選擇第一個 http 項目,表示使用 HTTP 方式來執行這個專案,不論是哪個,都將會是採用 ASP.NET Core 的 Kestrel 網頁伺服器 來啟動與執行這個網站,當然,也可以選擇 [IIS Express] 這個選項,透過 Windows 電腦中的 IIS Express 服務來運作這個網站。
在此,將會使用預設 https 方式來啟動此專案
一旦專案編譯、建置完成後,瀏覽器將會出現這個網頁
從上面剛剛提到的彈出功能表中,倒數第四項目,是可以選擇要採用哪種瀏覽器來執行這個網站網頁,因為沒有特別設定,從螢幕截圖可以看出,將會採用 Google Chrome 瀏覽器來開啟這個 ASP.NET Core 空白範本專案
在網頁上看出,這個網頁將採用 HTTPS 方式來連線到 Kestrel 網站服務,並且指定使用 7234 通訊埠來通訊;而從網頁上可以看到,僅有 Hello World!
這個文字。
從專案內容來理解為什麼會有這樣的執行結果
首先要看看 [Properties] 資料夾內的 [launchSettings.json] 檔案,這是一個 JSON 格式內容。
launchSettings.json 是用於制定 在 ASP.NET Core 中使用多個環境 運作的設定檔案
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51976",
"sslPort": 44358
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5242",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7234;http://localhost:5242",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
在這個 [iisSettings] 節點內,定義了 IIS Express 運作屬性,而在 [profiles] 內則會宣告可以有幾種啟動這個 Web 網站的方式,而且每個啟動方式可以指定不同參數
對於剛剛選擇的 https 執行模式,其啟動參數定義如下,將可以使用 https://localhost:7234 或者 http://localhost:5242 方式來連上這個專案網站,其中,因為 "ASPNETCORE_ENVIRONMENT": "Development" 設定值,將會強制環境參數為 Development,此時,將會影響到這個網站內的運作行為。
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7234;http://localhost:5242",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
接下來就是第二個檔案 appsettings.json ,這個檔案也是一個 JSON 格式內容,其預設檔案內容如下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
在 ASP.NET Core 7 中,將會提供 ASP.NET Core 的設定 功能,透過 ASP.NET Core 的設定 豐富能力,可以讓整個專案在設計與開發上更加有彈性。
最後一個就是這個專案的程式進入點,也就是這個 Web 網站的核心程式碼,這些程式碼將會在 [Program.cs] 檔案內,其內容如下:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
WebApplication.CreateBuilder 將會使用預先設定的預設值,建立一個 WebApplicationBuilder 執行個體,而這個專案可以透過型別為 WebApplicationBuilder 的 builder 物件,進行操作,例如,可以透過這個物件提供的 WebApplicationBuilder.Services 屬性 來進行相依性注入服務容器 或 稱之為 IoC 容器的相關服務註冊之用。
而對於 Configuration 屬性 將會要撰寫之應用程式的組態提供者集合
Environment 屬性 將 提供應用程式正在執行之 Web 主控環境的相關資訊
Host 屬性 將 無法修改,因為此唯讀屬性,若要在組態之後建置,請呼叫 Build() 方法
Logging 屬性 將 要撰寫之應用程式的記錄提供者集合
WebHost 屬性 將 用於設定伺服器特定屬性
因為這是一個相當簡單的 Web 專案,也就是空白專案,因此,將不會到 物件做任何操作,而是執行 var app = builder.Build();
,這樣就會產生一個型別為 WebApplication 物件,而將會透過 app 這個本地變數來存取。
對於 WebApplication 類別 的物件,將會用來設定 HTTP 管線和路由的 Web 應用程式
app.MapGet 這個方法,將是提供 最小 API 模式來設計,並且透過這個方法可以宣告網站路由,從這個範例程式碼 app.MapGet("/", () => "Hello World!");
代表宣告一個網站首頁路由,一旦導航到個 "/" 路由,將會顯示 Hello World!
文字在網頁上。
到現在為止,應該可以知道,為什麼開啟這個網站,就會出現這段文字了吧!
最後一行程式碼 app.Run()
也就是執行應用程式並封鎖呼叫執行緒,直到主機關閉為止,此時,這個網站程式已經開始運作,可以讓使用者透過瀏覽器來進行各種互動;不過,因為這是一個相當精簡的專案,並沒有提供其他額外路由與功能。
沒有留言:
張貼留言