8

当我将 ASP.NET5 部署到 azure web 应用程序时,我已经在 web 响应中检查了服务器是 IIS,所以我猜 IIS 平台处理程序用于将其重定向到 Kestrel。所以我想知道是否可以直接在 Kestrel 上运行,以及它有什么好处/缺点(可能不管它是否在 Azure 中)。我想它会快一点,因为 IIS 将从管道中排除,但我想它不应该有太多的开销......

4

2 回答 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 回答