ASP.NET Framework应用程序是严重依赖于IIS的,System.Web 中有很多方法都是直接调用的 IIS API,并且它还是驻留在IIS进程中的。而 ASP.NET Core 的运行则是一个完全独立的控制台程序,是在.NET Core 控制台程序下调用特定的库,它并不是必需在 IIS内部托管且并不需要IIS来启动运行,ASP.NET Core应用程序拥有一个内置的 Self-Hosted(自托管)的Web Server(Kestrel服务器),用来处理外部请求。 不管是托管还是自托管,都离不开Host(宿主)。在ASP.NET Core应用中通过配置并启动一个Host来完成应用程序的启动和其生命周期的管理。 而Host的主要的职责就是Web Server的配置和Pilpeline(请求处理管道)的构建。(有关Host的具体介绍会在ASP.NET Core 基础知识(七)Host介绍)。
对于一个控制台程序来说,它的入口点便是 Program 中的 Main
方法,ASP.NET Core 程序自然也不例外,因此Program.cs的主要作用是创建和设置Host。下面我们来看一下Host的创建过程。
Asp.Net Core的入口文件Program.cs。
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
从上面代码我们知道了CreateDefaultBuilder用来创建主机(详情会在ASP.NET Core 基础知识(七)Host介绍),创建完Host之后调用了UseStartup<Startup>(),那Startup是干什么的,在ASP.NET Core 基础知识(四) Startup.cs类介绍。