当我将 ASP.NET5 部署到 azure web 应用程序时,我已经在 web 响应中检查了服务器是 IIS,所以我猜 IIS 平台处理程序用于将其重定向到 Kestrel。所以我想知道是否可以直接在 Kestrel 上运行,以及它有什么好处/缺点(可能不管它是否在 Azure 中)。我想它会快一点,因为 IIS 将从管道中排除,但我想它不应该有太多的开销......
问问题
3509 次
2 回答
11
在 Azure Web App 上,您无法绕过 IIS。
但在一般情况下,你绝对可以直接运行 Kestrel。毕竟dnx web
,这正是 XPlat 版本(Linux、OSX)最终将使用的(几乎)。
不使用 IIS 的损失
- 安全性(与 IIS 相比更新的组件)
- 轻松设置 SSL
- 处理文件/缓存和其他东西的内核模块(内核=更快)
- 应用程序监控/Keep-Alive(如果 Kestrel 崩溃会发生什么)
- 多个主机名单端口(80)重用
- 等等
不使用 IIS 的好处
- 完全控制您的流程
- 更高的整体性能
- 更简单的安装/执行
如果您选择不使用 IIS,您应该怎么做
如果您对“输”点感到满意,我仍然会去将您的 Kestrel 托管在反向代理或 NGINX 服务器后面。Kestrel 是为“生产就绪”而设计的,但它不是 NGINX 或 IIS。
据我所知,它不会让自己保持活力。
如果我错过了什么,请告诉我。
于 2015-12-16T14:11:22.787 回答
6
您的问题有点模棱两可,因为它同时询问了 Azure Web Apps 和一般情况。@Maxime 回答了一般部分,所以我将回答 Azure Web App 部分。
在 Azure Web 应用程序中无法绕过 IIS。通常在没有 IIS 的情况下运行的堆栈通常使用HttpPlatformHandler
(如 ASP.NET 5 的情况)处理,或者在 Node 的情况下,它的一些变体(iisnode)。
于 2015-12-16T17:12:10.843 回答