Asp.net core有两种托管模式

 

进程内模式 和 进程外模式

 

配置方法是,visual studio 双击项目文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
      <!--进程内托管模式InProcess 进程外就是outofprocess-->
    <AspNetCoreHostingModel>outofprocess</AspNetCoreHostingModel>
  </PropertyGroup>

</Project>

配置这个AspNetCoreHostingModel,inprocess/outofprocess 

 

默认使用inprocess模式,ASP.NET Core程序,和普通的ASP.NET 一样,作为w3wp进程 (或者iisexpress)运行,这就是 进程内模式。目前开起来也就IIS 、IISExpress 支持这两种

 

如果使用outofprocess模式,

 

如果是iis运行ASP.NET Core,看到的进程的名字是dotnet 因为是dotnet.exe进程在运行

 

如果是iisexpress运行,看到进程的名字是 exe的名字(比如myApp)

 

如果是iis运行,看到进程的名字是dotnet

 

如果是通过双击 exe直接运行 (bin\Debug目录下的exe)或者通过 dotnet run 命令行启动,

 

不管你配置的是in还是outof,看到的都是 app的名字,这时候是 kestrel 在做web服务器运行。

 

所谓进程内模式,就是 IIS\IISEXPRESS,把编译的.dll文件作载入进程,进行处理。

 

所谓进程外模式,就是 IIS\IISEXPRESS\APACHE\NGINX 等web服务器,收到HTTP请求后,转发给DOTNET.EXE 去处理这种模式。

 

进程内模式看起来效率要高一些,

 

进程外模式,有点类似以前的多进程模型的IIS,估计是为了减少和外部WEB服务器的耦合。

posted on 2021-10-25 00:16  zooz  阅读(479)  评论(0编辑  收藏  举报