ASP.NET Core 启动(1)

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();
}

.NET Core 的宿主WebHost主要执行以下任务:

  • 加载.NET Core runtime.
  • 启动应用

Main方法通过生成器模式来调用WebHost.CreateDefaultBuilder来创建宿主主机环境。生成器提供定义 Web 服务器(例如,UseKestrel)和启动类 (UseStartup) 的方法。

在上面的例子中,默认分配了 Kestrel Web 服务器

IWebHostBuilder 是 调用WebHost.CreateDefaultBuilder 的返回类型,它提供了许多可选方法。 其中的一些方法包括用于在 HTTP.sys 中托管应用的 UseHttpSys,以及用于指定根内容目录的 UseContentRoot,还有提供Build 和 Run 方法生成 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相关,依然是启动过程。

一个每日更新的干货公众号

你可能感兴趣的:(ASP.NET Core 启动(1))