2
3
4
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return HostBuilder(args);
}
public static IHostBuilder HostBuilder(string[] args)
{
//CreateDefaultBuilder执行的一些任务:
//1:设置Web服务器
//2:加载主机和应用程序配置表信息
//3:配置日志记录
var defaultBuilder = Host.CreateDefaultBuilder(args);
return defaultBuilder.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
aspnet core分为进程内托管(InProcess)和进程外托管(OutOfProcess )
点击项目应用程序->右键->编辑项目文件,我们可以通过在<PropertyGroup>节点下添加<AspNetCoreHostingModel>节点的方式
给.NetCore项目设置进程内托管,或者进程外托管,NetCore默认为进程外托管,所以可以不设置它
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<!--设置为进程内托管,如果不设置.NetCore默认为进程外托管--><!--
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
--><!--设置为进程外托管--><!--
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>-->
</PropertyGroup>
<ItemGroup>
</ItemGroup>
</Project>
进程内托管
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
在InProcess托管的情况下,CreateDefaultBuilder()方法调用UseIIS()方法 [中间件],并在IIS工作进程(w3wp.exe或iisexpress.exe) 内托管应用程序
1:引用程序托管在IIS的工作进程中(w3wp.exe)
2:只有一个Web服务器(IIS)
3:从性能的角度来看,InProcess托管比OutOfProcess托管提供了更高的请求吞吐量
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
什么是OutOfProcess托管?
OutOfProcess托管一般有2个Web服务器,1个内部服务器和1个外部服务器(如果将Kestrel设置自托管则就只有一个服务器)
内部服务器是Kestrel
外部服务器可以是IIS,Nginx,或者Apache等
Kestrel:它是ASP.NET CORE内置的一个服务器,它能够运行在所有的操作系统中,它可以直接托管应用程序,然后面向互联网。它也可以搭配外部服务器 如IIS,Nginx,或者Apache,此时的IIS,Nginx,或者Apache就是一个反向代理服务器,他们并不处理请求,只是将请求转发到Kestrel服务器,Kestrel服务器处理完用户请求后将数据传递给IIS,Nginx,或者Apache等外部服务器,外部服务器再将数据返回给用户)
因篇幅问题不能全部显示,请点此查看更多更全内容