架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3189|回复: 2

[.NET Core] ASP.NET Core 在 IIS 中 In-Process 和 Out-Of-Process 托管模型

[复制链接]
发表于 2022-5-14 13:18:08 | 显示全部楼层 |阅读模式
自从 .NET  Core 跨平台后,ASP.NET Core 项目既可以在 Windows 上面跑也可以在 Linux 上面跑,在 Windows 上面部署的话,既可以部署到 IIS 上面,也可以直接通过命令行运行,不依赖于 IIS 服务,这是由于 ASP.NET Core 内部包含 Kestrel 容器。

关于如何将 ASP.NET Core 应用部署到 IIS 服务,可以参考如下:

【实战】ASP.NET Core 部署到IIS服务器
https://www.itsvse.com/thread-7838-1-1.html
ASP.NET Core 部署在 IIS 中有 In-ProcessOut-Of-Process 两种托管模型

参考资料:

https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/in-process-hosting?view=aspnetcore-6.0&viewFallbackFrom=aspnetcore-3.1
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/out-of-process-hosting?view=aspnetcore-6.0&viewFallbackFrom=aspnetcore-3.1


进程内 In-Process 模型

自 ASP.NET Core 3.0 起,默认情况下已为部署到 IIS 的所有应用启用进程内托管(In-Process),web.config 文件如下:

可以看到 hostingModel="inprocess",进程内模型不使用Kestrel,而是使用IISHttpServer()直接在IIS应用程序池内部托管的新Web服务器实现,该实现与传统的ASP.NET被引入IIS的方式有些相似。

下图说明了 IIS、ASP.NET Core 模块和进程内托管的应用之间的关系:

QQ截图20220514130604.jpg

尝试访问网站,可以通过响应头查看 server ,如下图:

QQ截图20220514130709.jpg

通过任务管理器查看进程,也只有 2 个进程,如下图:

QQ截图20220514130942.jpg

进程外 Out-Of-Process 模型

该模型 IIS 充当反向代理的作用,当收到请求后,需要将请求转发给 Kestrel 服务,Kestrel 是嵌入在 ASP.NET Core 应用程序中的跨平台 web 服务器。

下图说明了 IIS、ASP.NET Core 模块和进程外托管的应用之间的关系:

QQ截图20220514131346.jpg

我们修改 web.config 文件,如下:

我们通过浏览器访问网站,可以查看响应头的 server 值变成了 Kestrel,如下图:

QQ截图20220514131549.jpg

同时查看任务管理器,发现有 3 个进程,如下图:

QQ截图20220514131633.jpg

总结

在 InProcess 托管模型中,请求和响应通过 w3wp.exe 或 IISExpress 提供,而在涉及的 OutOfProcess 工作进程中是 dotnet.exe
在 InProcess 托管模型中,使用单个 Web 服务器,而在 OutOfProcess 托管模型中,可以使用两个 Web 服务器。

使用新的 In-Process 模型的明显原因是它更快,使用的资源更少,InProcess 托管模型提供了更好的性能,因为它直接在IIS应用程序池的过程中运行。没有内部HTTP流量和开销,请求将立即处理。





上一篇:【实战】Nginx 添加启用 HTTP/2 协议
下一篇:【译】错误地使用了 HttpClient 会破坏您的软件
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2022-5-14 13:20:23 | 显示全部楼层
ASP.NET Core 进程内与进程外的性能对比:http://blog.iis7.com/article/5958.html
ASP.NET Core 5 在IIS,Nginx,Caddy下的性能测试:https://cloud.tencent.com/developer/article/1788073
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-5-14 15:07:14 | 显示全部楼层
学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 22:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表