ASP.NET Core 进程托管模型

简介

一个ASP.NET Web 应用程序可以通过两种方式托管,即进程内托管(InProcess)或进程外托管(OutOfProcess)。

要为 ASP.NET Core Web 应用程序配置进程托管模型,只需将AspNetCoreHostingModel元素值添加到应用程序项目文件中即可。

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

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
   	//配置进程内托管配置
	<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
	//配置进程外托管配置
    <!--<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>-->
  </PropertyGroup>

</Project>

在这里插入图片描述

进程内托管(InProcess)

只有一个Web服务器,在InProcess托管情况下,CreateDefaultBuilder()方法调用UseIIS()方法并在IIS或IIS Express工作进程(w3wp.exe或iisexpress.exe)内托管应用程序。

什么是IIS Express?
IIS Express 是 IIS 的轻量级自包含版本,它针对 Web 应用程序开发进行了优化,仅在开发中使用 IIS Express,在生产中通常使用 IIS。
在这里插入图片描述

进程外托管(OutOfProcess)

有两个Web服务器,内部Web服务器和外部Web服务器。内部Web服务器Kestrel也是自宿主服务器,外部Web服务器可以是IlS, Nginx或Apache等做代理服务器。

什么是Kestrel Web 服务器?
ASP.NET Core是一个跨平台框架。 这意味着它支持在不同类型的操作系统(例如Windows,Linux或Mac)上开发和运行应用程序。Kestrel是ASP.NET Core应用程序的跨平台Web服务器。 这意味着该服务器支持ASP.NET Core支持的所有平台和版本。 默认情况下,它包含在.NET Core应用程序中作为内部Web服务器。Kestrel Web服务器通常用作边缘服务器,即面向Internet的Web服务器,它直接处理来自客户端的传入HTTP请求。 对于Kestrel Web服务器,用于承载和运行ASP.NET Core应用程序的进程名称是项目名称。

Kestrel可以用作面向互联网的Web服务器,直接处理传入的HTTP请求。此模型中,我们不使用外部Web服务器,而是只使用Kestrel,它作为服务器自主面向互联网,直接处理传入的HTTP请求。当我们使用.Net Core CLI运行Asp.Net Core运行程序时忽略InProcess配置,Kestrel是唯一用于处理传入HTTP请求的Web服务器,默认进程外托管
在这里插入图片描述

Kestrel与反向代理服务器(如IIS、Apache或Nginx)结和使用
在这里插入图片描述
反向代理服务器

Kestrel可以单独用作Web服务器,为什么还需要反向代理服务器?

如果Kestrel使用进程外托管,则结和反向代理服务器是一个不错的选择,因为它提供了额外的的配置和安全性,可以更好的与现有基础设施集成,同时还可以用于负载均衡。

因此,在使用反向代理服务器的情况下,它将接收来自网络的HTTP请求并将其转发到Kestrel服务器进行代理。在处理请求时,Kestrel服务器将响应发送到反向代理服务器,然后反向代理服务器通过网络将响应发送到请求的客户端。

进程内(InProcess)和进程外(OutOfProcess)托管对比

进程内进程外
进程名称“w3wp.exe”或“iisexpress.exe”进程名称“项目名称.exe”
一个服务器两个服务器
性能更好在内部和外部服务器之间代理请求有性能消耗

总结

  • InProcess表示要使用进程内托管模型,即在IIS工作进程(w3wp.exe)中托管Asp.Net Core应用程序
  • OutOfProcess表示使用进程外托管模型,将Web请求转发到Kestrel服务器的后端Asp.Net Core应用程序中。
  • Asp.Net Core3.x,默认AspNetCoreHostingModel隐式声明进程内托管。
  • Kestrel不与进程内托管一起使用(使用项目名启动应用则会忽略InProcess配置使用进程外托管)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值