ASP.NET Core 是一個控制台應用程式,在其 main 方法中創建一個Web伺服器,以下是program.cs中的代碼: Main 方法調用 WebHost.CreateDefaultBuilder ,它遵循建造者模式來創建 web application host 。 builder 定義 ...
ASP.NET Core 是一個控制台應用程式,在其 main 方法中創建一個Web伺服器,以下是program.cs中的代碼:
using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; namespace WebApplication5 { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); } }
Main 方法調用 WebHost.CreateDefaultBuilder ,它遵循建造者模式來創建 web application host 。 builder 定義了Web伺服器(例如UseKestrel)和啟動類(UseStartup)方法。 在上述示例中,Kestrel Web伺服器將自動分配。 ASP.NET Core's web host 將嘗試在IIS上運行(如果可用)。 其他Web伺服器(如HttpSys)可以通過調用合適的擴展方法來使用。 UseStartup 將在下一節進一步介紹。
IWebHostBuilder 是 WebHost.CreateDefaultBuilder 方法的返回值類型,提供了許多可選方法。 其中一些方法包括 UseHttpSys ,用於在HttpSys中托管應用程式,以及 UseContentRoot ,用於指定根內容目錄。 Build 和 Run 方法用於構建 IWebHost 對象,該對象將承載應用程式並開始監聽HTTP請求。
Startup
WebHostBuilder 上的 UseStartup 方法指定了您的應用程式的啟動類:
啟動類是您定義請求處理管道和配置應用程式所需的任何服務的地方。 啟動類必須是公有的,並包含以下方法:
public class Startup { // This method gets called by the runtime. Use this method to add services to the container.
//添加服務的地方
public void ConfigureServices(IServiceCollection services) { } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
//配置請求管道的地方
public void Configure(IApplicationBuilder app) { } }
ConfigureServices 定義應用程式使用的服務(如ASP.NET Core MVC,Entity Framework Core,Identity等)。Configure 定義請求管道中的中間件。
服務是用於應用程式中常見消費的組件。 服務通過依賴註入(DI)提供。 ASP.NET Core包括一個本地控制反轉(IoC)容器(預設情況下支持構造函數註入)。 本地容器可以替換為您選擇的容器。 除了松耦合外,DI還可在整個應用中提供服務。 例如,您的應用程式中可以使用日誌記錄。有關更多信息,請參閱依賴註入。
中間件
在ASP.NET Core中,您使用中間件編寫請求管道。 ASP.NET Core中間件在HttpContext上執行非同步邏輯,然後在依次調用下一個中間件或直接終止請求。 通過在Configure方法中調用UseXYZ擴展方法來添加一個名為“XYZ”的中間件組件。
ASP.NET Core配備了豐富的內置中間件:
- 靜態文件
- 路由
- 認證
您可以使用任何基於OWIN的中間件與ASP.NET Core,也可以自定義中間件。有關更多信息,請參閱Middleware and Open Web Interface for .NET (OWIN).
伺服器
ASP.NET Core 托管模型不直接監聽請求; 相反,它依賴於HTTP伺服器實現將請求轉發到應用程式。 轉發的請求被包裝為一組您可以通過介面訪問的功能對象。該應用程式將此集合組成一個HttpContext。 ASP.NET Core包括一個受管理的,跨平臺Web伺服器,稱為Kestrel。就像iis 或 nginx 一樣。有關詳細信息,請參閱 Servers and Hosting。
Content root
content root 是應用程式使用的任何內容的基路徑,例如視圖,Razor Pages,和靜態資源。預設情況下, content root 與托管應用程式的可執行文件的應用程式基路徑相同。可以使用 WebHostBuilder 指定 content root 的位置。
Web root
應用程式的Web根目錄是項目中包含公共靜態資源(如CSS,JavaScript和圖像文件)的目錄。預設情況下,靜態文件中間件只會從Web根目錄及其子目錄提供文件。請參閱working with static files獲取更多信息。 Web根路徑預設為 /wwwroot ,但您可以使用 WebHostBuilder 指定不同的位置。
Configuration
ASP.NET Core使用新的配置模型來處理簡單的名值(name-value)對。新的配置模型不基於 System.Configuration 或 web.config ;相反,它從一組有序的配置提供者中抽取出來。內置配置提供程式支持各種文件格式(XML,JSON,INI)和環境變數,以實現基於環境的配置。您也可以編寫自定義配置提供程式。有關詳細信息,請參閱 Configuration。
Environments
環境,如“開發”和“生產”,是ASP.NET Core中的最好的理念,可以使用環境變數進行設置。有關詳細信息,請參閱Working with Multiple Environments。
.NET Core vs. .NET Framework runtime
ASP.NET Core應用程式可以選擇.NET Core或.NET Framework運行時。有關更多信息,請參閱.NET Core和.NET Framework之間的選擇。
本文來源:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/index?tabs=aspnetcore2x