是否可以直接在 Azure WebApps 的 Kestrel 上 运行 ASP.NET 5 站点?
Is it possible to run ASP.NET 5 site directly on Kestrel in Azure WebApps?
当我将 ASP.NET5 部署到 azure web 应用程序时,我已经检查过在 web 响应中服务器是 IIS,所以我猜 IIS 平台处理程序用于将它重定向到 Kestrel。所以我想知道是否可以直接在 Kestrel 上 运行,以及 benefits/drawbacks 会有什么(可能不管它是否在 Azure 中)。我想它会快一点,因为 IIS 将从管道中排除,但我想它不应该有太多开销...
在 Azure Web App 上,您无法绕过 IIS。
但一般情况下,肯定可以直接运行Kestrel。毕竟它只是 dnx web
并且它正是 XPlat 版本(Linux、OSX)最终将使用的(几乎)。
不使用 IIS 的损失
- 安全性(与 IIS 相比更新的组件)
- 轻松设置 SSL
- 处理 file/cache 和其他事情的内核模块(内核 = 更快)
- 应用程序monitoring/Keep-Alive(如果 Kestrel 崩溃会怎样)
- 多个主机名单端口(80)重用
- 等等
不使用 IIS 的好处
- 完全控制您的流程
- 更高的整体性能
- 更简单installation/execution
如果您选择不使用 IIS,您应该怎么做
如果您对“失去”点没有意见,我仍然会去将您的 Kestrel 托管在反向代理或 NGINX 服务器后面。 Kestrel 被设计为“生产就绪”,但它不是 NGINX 或 IIS。
据我所知,它不会让自己存活。
如果我遗漏了什么,请告诉我。
你的问题有点模棱两可,因为它同时询问了 Azure Web 应用程序和一般情况。 @Maxime 回答了一般部分,所以我将回答 Azure Web App 部分。
不可能绕过 Azure Web 应用程序中的 IIS。通常 运行 没有 IIS 的堆栈通常使用 HttpPlatformHandler
处理(如 ASP.NET 5 的情况),或者在 Node 的情况下(iisnode)的某些变体。
当我将 ASP.NET5 部署到 azure web 应用程序时,我已经检查过在 web 响应中服务器是 IIS,所以我猜 IIS 平台处理程序用于将它重定向到 Kestrel。所以我想知道是否可以直接在 Kestrel 上 运行,以及 benefits/drawbacks 会有什么(可能不管它是否在 Azure 中)。我想它会快一点,因为 IIS 将从管道中排除,但我想它不应该有太多开销...
在 Azure Web App 上,您无法绕过 IIS。
但一般情况下,肯定可以直接运行Kestrel。毕竟它只是 dnx web
并且它正是 XPlat 版本(Linux、OSX)最终将使用的(几乎)。
不使用 IIS 的损失
- 安全性(与 IIS 相比更新的组件)
- 轻松设置 SSL
- 处理 file/cache 和其他事情的内核模块(内核 = 更快)
- 应用程序monitoring/Keep-Alive(如果 Kestrel 崩溃会怎样)
- 多个主机名单端口(80)重用
- 等等
不使用 IIS 的好处
- 完全控制您的流程
- 更高的整体性能
- 更简单installation/execution
如果您选择不使用 IIS,您应该怎么做
如果您对“失去”点没有意见,我仍然会去将您的 Kestrel 托管在反向代理或 NGINX 服务器后面。 Kestrel 被设计为“生产就绪”,但它不是 NGINX 或 IIS。
据我所知,它不会让自己存活。
如果我遗漏了什么,请告诉我。
你的问题有点模棱两可,因为它同时询问了 Azure Web 应用程序和一般情况。 @Maxime 回答了一般部分,所以我将回答 Azure Web App 部分。
不可能绕过 Azure Web 应用程序中的 IIS。通常 运行 没有 IIS 的堆栈通常使用 HttpPlatformHandler
处理(如 ASP.NET 5 的情况),或者在 Node 的情况下(iisnode)的某些变体。