【问题标题】:Distinction between Kestrel and Katana红隼和武士刀的区别
【发布时间】:2015-02-27 21:35:29
【问题描述】:

我的理解是目前您可以使用 Katana 自行托管 WebAPI,而 MVC 将在未来的版本中提供此功能。本质上,Katana 将成为 MVC 和 WebAPI 都可用的托管选项。

Kestrel 已经加入进来,我看到一些 MS 员工在博客上展示了在 Linux 上托管 ASP.NET vNext。

我的理解是 Kestrel 和 Katana 都实现了 OWIN 管道。

从那里开始有点模糊。我问自己,为什么 Kestrel 会出现在画面中,而如果您使用 mono 编译 Katana 并努力使其跨平台兼容(也许说起来容易做起来难),Katana 似乎可以达到同样的目的。

Kestrel 和 Katana 的用途相同吗?还是一种在某些方面具有专长,而另一种则不然?

Kestrel 最终会成为 Windows 部署的可行选择吗?还是会专门针对非 Windows 环境而 Katana 仍然是 Windows 的选择?

我知道,由于我对 Katana/Kestrel 缺乏了解,我可能要求将苹果与橙子进行比较,但如果答案是“橙子比苹果有更多的酸味”,那么 IMO 就是一个完美的选择有效答案。

【问题讨论】:

  • 为什么这被认为过于宽泛?我不是要功能列表或逐行比较。是什么让它们与众不同,就像“哺乳动物与爬行动物有何不同?”可以回答为“哺乳动物是一种在幼年时会用牛奶喂养婴儿的动物,而爬行动物则不会。”回答这样的问题不需要详细列出每一个差异。
  • 这显然不是我回答的范围太广 :)

标签: asp.net asp.net-mvc owin katana


【解决方案1】:

Katana 是 Microsoft 的 OWIN 实现,还包括一些用于安全/身份验证、提供静态文件和其他一些功能的中间件组件。

Kestrel 是 Microsoft 的跨平台开发 Web 服务器,可与 ASP.NET 5 一起使用。

ASP.NET 5 没有实现 OWIN,但有一个“桥梁”使 OWIN 组件能够在 ASP.NET 5 应用程序中使用,包括在 Kestrel 上运行。

【讨论】:

  • 对于像我一样困惑的人来说,ASP.NET 5 不再是东西了。他们称之为 ASP.NET Core 1.0。
【解决方案2】:

在阅读了这个问题下的其他答案后,我仍然没有清楚的了解,所以我做了一些研究,这是我的结论:

  • OWIN 是一种规范,它定义了 Web 服务器(如 Kestrel 和 Katana 提供的服务器)和 Web 应用程序(您的代码)之间的编程接口。
  • Kestrel 来自 ASP.NET Core。这是一个与 OWIN 兼容的网络服务器。
  • Katana 来自 ASP.NET 4.X。它是 Microsoft 的 OWIN 实现的一组东西,包括 OWIN 服务器。

最后但并非最不重要的一点:

  • ASP.NET 5 已死并被 ASP.NET Core 取代。所以就不要再提了。

    (2019 年 6 月 28 日更新:“今天,我们宣布 .NET Core 3.0 之后的下一个版本将是 .NET 5”——作者:MS https://devblogs.microsoft.com/dotnet/introducing-net-5/。这意味着将会有 ASP.Net 5 ,其实就是下一代的ASP.Net Core)

  • OWIN 是 ASP.NET 4.X 和 ASP.NET Core 中的关键/必不可少的东西。

更多信息,您可以阅读https://www.quora.com/Is-ASP-NET-Core-a-replacement-for-OWIN-Katana

【讨论】:

  • 很好的总结。请注意,ASP.NET 4.8+ 仍然是一个活跃且成熟的平台。说 ASP.NET 5 被“重命名为 ASP.NET Core”比说它死了要好一些。
【解决方案3】:

可能是一个老问题,但由于快速的谷歌搜索将我带到这里,我认为没有其他人问过类似的问题。

引用 ASP.NET 5 文档:

红隼

Kestrel 是一个基于跨平台异步 I/O 库 libuv 的跨平台 Web 服务器。 Kestrel 是开源的,您可以在 GitHub 上查看 Kestrel 源代码。您可以通过在 project.json 中列出的项目依赖项中包含“Kestrel”来添加对 Kestrel 的支持。

选择服务器

如果您打算在 Windows 服务器上部署应用程序,则应将 IIS 作为反向代理服务器运行,以管理和代理对 Kestrel 的请求。如果在 Linux 上部署,您应该运行类似的反向代理服务器(例如 Apache 或 Nginx)来代理对 Kestrel 的请求。

对于自托管方案,例如在 Service Fabric 中运行,我们建议使用不带 IIS 的 Kestrel。但是,如果您需要在自托管方案中进行 Windows 身份验证,则应选择 WebListener。

所以,我的理解是:如果 Kestrel 只是一个开发服务器,它就不再是了,它正在以某种方式取代 Katana 和 OWIN。

【讨论】:

    【解决方案4】:

    “Project Katana”包括 Microsoft 添加对 OWIN 的 IIS 的支持、创建 OwinHost.exe 并提供 libraries to allow application to interface with a self hosting WebAPI。 ASP.NET MVC 5(不是 ASP.NET Core)使用其中一些库(例如 Microsoft.Owin.Security)通过 OWIN 连接身份/身份验证,但 MVC 5 不支持自托管(尽管可以使用其他工具)。 SelfHosting 库仅适用于 WebAPI。

    所以“Katana”是一个广义术语,指的是主机实现以及对 OWIN 的 Web 应用程序支持:"These components include both infrastructure components, such as hosts and servers, as well as functional components, such as authentication components and bindings to frameworks such as SignalR and ASP.NET Web API."

    您可能会看到诸如“从 Katana 迁移到 ASP.NET Core”之类的短语,它指的是 Web 应用程序端。这意味着放弃 Microsoft.Owin 库,并使用内置了完整 OWIN 支持的 ASP.NET Core,而无需额外的库。或者您可能会看到类似的短语,这意味着从 Katana 主机转移到另一个主机,例如 Kestrel。不幸的是,该术语用于指代实现的任何一方,几乎没有说明,您必须注意讨论的上下文。

    Kestrel 只是一个主机实现。其目标是跨多个平台提供 OWIN 托管支持。它更轻量级,但不像 IIS 那样全功能或成熟。建议在更安全和更可靠的 Web 服务器(如 IIS、Apache、nginx 或其他)的反向代理后面使用它。 Kestrel 是 Microsoft 当前文档推荐的主机,用于在 Linux 等其他平台上部署 ASP.NET Core Web 应用程序。

    如果您创建 ASP.Net Core 项目,则默认情况下当前包含 Kestrel。它在 ASP.NET Core 支持的相同平台上受支持。

    【讨论】:

    • 谢谢@AaronLS。哪些工具支持自托管 ASP.NET MVC 5?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多