iis - 在 IIS 中托管 .NET Core Web 应用程序时, "In process"和 "out of process"托管模型之间的优缺点是什么

标签 iis .net-core backend

在 IIS 中托管 .NET Core Web 应用程序时,您可以在进程内和进程外托管模型之间进行选择。

除了通过使用进程内获得更好的性能外,“进程内”和“进程外”托管模型之间有哪些优缺点?

对于测试/开发与生产,一个比另一个更好吗?

我想“进程外”托管模型更容易附加调试器。

最佳答案

从 ASP.NET Core 3.0 开始,“进行中”是默认设置,请参阅 this Microsoft page .在 IIS.ASP.NET Core 模块上托管 Web 应用程序时,会将请求转发到 IIS HTTP Server (IISHttpServer)。 IIS HTTP 服务器是与 IIS 一起在进程内运行的服务器。
如果您使用进程外托管模型,则不会使用 IIS HTTP Server。相反,Kestrel Web 服务器用于处理您的请求。
来自 Rick's blog :
“进程中”提供了更好的性能,并且通常占用的资源更少,因为它避免了 IIS 和 Kestrel 之间的额外网络跳跃,并在需要监控的机器上维护了一个额外的进程。
在某些情况下可能需要 OutOfProcess 托管,例如故障排除和调试故障服务器(例如,您可以在启用控制台日志记录的情况下运行)或者如果您希望在同一应用程序的不同部署之间 100% 兼容,无论是在 Windows 还是 Linux 上,因为 Kestrel 是用于在所有平台上处理 HTTP 请求的主要机制。
使用 InProcess 模型,您不使用 Kestrel,而是使用直接与 IIS 的请求管道接口(interface)的自定义 IISHttpServer 实现。
但是对于大多数意图和目的,我认为在 IIS 上运行 InProcess 是可行的方法,除非您非常具体地需要 Kestrel 和 OutOfProcess 托管。

关于iis - 在 IIS 中托管 .NET Core Web 应用程序时, "In process"和 "out of process"托管模型之间的优缺点是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320690/

相关文章:

asp.net - aspnet_regiis.exe 有什么作用

reactjs - .NET Core 5 WebApi 如何包含 React 应用程序

c# - C# 中的 Powerpoint 加载项应用程序,需要访问演示文稿所有者的详细信息

asp.net-core - ASP.NET core RC1 到 1.0.0 迁移错误

java - Google App Engine Java 后端

iis - 添加网站和将应用程序添加到网站同时发布到 iis 有什么区别

.net - 关于 MVC 自定义错误和本地堆栈跟踪的 web.config 中的 <httpErrors> 问题

c# - 在中间件之前调用自定义 AuthenticationHandler

ios - 身份验证(护照)足以保证 Node js 后端服务器的安全性?

php - 包含不必要的 php 文件会减慢网站速度吗?