.NET CORE基礎

.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等外部服務器,外部服務器再將數據返回給用戶)

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章