.NET CORE的亮點及特性
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>();
});
}
}
.NetCore的託管
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等外部服務器,外部服務器再將數據返回給用戶)