ASP.NET Core 啟動(1)

weixin_34321977發表於2018-11-06

ASP.NET Core 應用是一個控制檯應用

它在 Program.csMain 方法中建立 Web 伺服器。
Main 方法整個應用的入口:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

.NET Core 的宿主WebHost主要執行以下任務:

Main方法通過生成器模式來呼叫WebHost.CreateDefaultBuilder來建立宿主主機環境。生成器提供定義 Web 伺服器(例如,UseKestrel)和啟動類 (UseStartup) 的方法。

在上面的例子中,預設分配了 Kestrel Web 伺服器

IWebHostBuilder 是 呼叫WebHost.CreateDefaultBuilder 的返回型別,它提供了許多可選方法。 其中的一些方法包括用於在 HTTP.sys 中託管應用的 UseHttpSys,以及用於指定根內容目錄的 UseContentRoot,還有提供BuildRun 方法生成 IWebHost 物件,該物件啟動後就開始託管應用並開始偵聽 HTTP 請求。


Startup 類用於定義請求處理管道和配置注入應用所需的任何服務。 Startup 必須是公共類,幷包含以下方法:

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 和標識)。Configure 定義在請求管道中呼叫的中介軟體

總上所述:

  1. ASP.NET Core 是一個控制應用。
  2. ASP.NET Core 的啟動入口是在 Program.csMain 方法中。
  3. ASP.NET Core 啟動會初始化一個宿主,該宿主用來託管應用。
  4. ASP.NET Core 因為是一個控制檯應用,所以肯定是沒有http能力的,於是內建了一個Web服務。
  5. ASP.NET Core 是一個大框架,該框架可以跨平臺。
  6. ASP.NET Core 的啟動就是初始化一個 IWebHost
    物件。

接下來,我開始講Startup相關,依然是啟動過程。

7131940-976a6241387be756.jpg
一個每日更新的乾貨公眾號

相關文章