.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等外部服务器,外部服务器再将数据返回给用户)

 

 

 

 

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