【问题标题】:kestrel vs async await c#kestrel vs async await c#
【发布时间】:2018-10-09 19:20:20
【问题描述】:

在各种技术博客/网站上都指出,使用 asp.net 内核引入的新 Web 服务器 kestrel 比 IIS 具有性能优势,因为它使用基于单线程事件循环模型的 libuv 库。

如果我在 C# 中对 I/O 任务使用异步等待并使用 IIS 而不是 Kestrel,我无法理解这有何不同。由于异步等待也是一个非阻塞调用,所以我无法理解吞吐量/性能优势。

请有人用简单的话详细说明一下。

我知道 kestrel 是跨平台的,但我的查询是围绕我应该使用 kestrel 获得的性能/吞吐量优势,所以如果我只针对 Windows,让我重新表述我的问题,使用 kestrel 与 IIS 是否可以获得任何性能优势.我浏览过的大多数链接都表明 Kestrel 使用 libuv,因此它提供了一些性能优势,但没有详细说明它的不同之处,这使得它更快。如果我不使用任何 IIS 模块,那么性能是否具有可比性

【问题讨论】:

标签: c# task-parallel-library libuv kestrel


【解决方案1】:

是否使用 async / await keywoeds 与使用 IIS 或 Kestrel 无关。

IIS 只能在 Microsoft Windows 操作系统上运行 - 通常是 Windows Server,但例如 Windows 10 也可以运行 IIS。

Kestrel 是一个跨平台的 Web 服务器,可能托管在 IIS / Apache / 等后面,具体取决于服务器操作系统。

有关 IIS 和 Kestrel 以及跨平台机会的更深入解释,请参阅ASP.Net Core Web Servers,有关 async / await 的更详细解释,请尝试using async / await

【讨论】:

  • 嗨,Jay,感谢您抽出时间回复我的问题。我知道红隼是跨平台的,但我的查询是围绕我应该使用红隼获得的性能/吞吐量优势,所以如果我只针对 Windows,让我重新表述我的问题,使用红隼与 IIS 是否可以获得任何性能优势。我浏览过的大多数链接都表明 Kestrel 使用 libuv,因此它提供了一些性能优势,但没有详细说明它的不同之处,这使得它更快。如果我不使用任何 IIS 模块,那么性能是否具有可比性
  • @saurabhvats - 使用 edit 链接将此添加到您的问题中。
  • 嗨@saurabhvats - 第一个链接是指同时使用IIS 和Kestrel 的建议。 IIS 非常擅长它的工作,“微软建议总是在 Kestrel 前面使用另一个 Web 服务器来处理公共网站。” SSL 证书、日志记录、请求过滤等都在 IIS 的“盒子中”——如果您只是自托管(并非所有 ISP 都允许该选项),您也必须处理这些任务。虽然可行,但 IIS 已经可以了。基本上,这不是一个非此即彼的方案 - 两者兼而有之,为自己节省大量工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 2020-12-31
  • 2019-04-07
  • 2017-05-10
  • 2018-07-15
  • 2019-05-10
  • 1970-01-01
相关资源
最近更新 更多