歡迎光臨
每天分享高質量文章

《從零開始學ASP.NET CORE MVC》:ASP.NET Core 中的 Main方法(5)

 

本文出自《從零開始學ASP.NET CORE MVC》
推薦文章:ASP.NET Core Web 專案檔案

ASP.NET Core 中的 Main方法

一個開始專心寫字的人

在ASP.NET Core專案中,我們有一個名為Program.cs的檔案。在這個檔案中,我們有一個public static void Main()方法 。

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

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

如果您對傳統的.NET Framework有任何使用經驗,則知道控制台應用程式具有Main()方法,它是該控制台程式的入口。

但今天,我們正在創建一個ASP.NET Core Web應用程式而不是控制台應用程式。因此,我們想到的一個顯而易見的問題是。
為什麼我們也會有一個Main()方法?

所以這個知識點,要記住的。ASP.NET Core 應用程式最初作為控制台應用程式啟動,而Program.cs檔案中的Main()方法就是入口。

因此,當運行時執行我們的應用程式時,它會查找此Main()方法以及執行配置開始的地方。

這個Main()方法配置asp.net Core 並啟動它,此時,它成為一個asp.net Core Web應用程式。因此,如果你跟蹤一下Main()方法,它會呼叫CreateWebHostBuilder()方法傳遞命令列引數。

然後你就可以看到,CreateWebHostBuilder()方法傳回一個實現IWebHostBuilder的物件。
在此物件上,呼叫Build()方法,會將我們的ASP.NET Core 應用程式生成並且托管到服務器上。
在服務器上的程式呼叫Run() 方法,該方法運行後Web應用程式並開始偵聽傳入的HTTP請求。
CreateWebHostBuilder()方法呼叫靜態類WebHost中的靜態方法CreateDefaultBuilder()
CreateDefaultBuilder()方法會在服務器上創建一個已經預設置好的預設值。
CreateDefaultBuilder()方法執行多項操作來創建服務器.

我們在後面的視頻中詳細討論CreateDefaultBuilder()中的所有方法。

而現在你只需要瞭解CreateDefaultBuilder()方法是用於在服務器上創建程式配置的預設值而存在
它作為設置服務器的一部分,還使用了IWebHostBuilder接口中的UseStartup()的擴展方法來配置Startup類。
如果您不熟悉擴展方法的概念, 那麼你該去補課了。

按照微軟的規則,ASP.NET Core中的啟動類名為Startup。 這個類有2種方法。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    { }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    }
}

Startup類雖然只有兩個方法,但是這兩個方法做了非常重要的事情:

  • ConfigureServices()方法配置應用程式所需的服務
  • Configure()方法配置應用程式的請求處理管道

我們理解這兩種方法的作用是非常重要。

在後面的課程中,我們會大量使用這兩種方法。到時候需要大家多次加深印象。

    已同步到看一看
    赞(0)

    分享創造快樂