红隼和卡塔纳之间的区别

Aar*_*nLS 52 asp.net asp.net-mvc owin katana

我的理解是,您目前可以使用Katana自行托管WebAPI,MVC将在未来版本中具备此功能.基本上Katana将是MVC和WebAPI都可以使用的托管选项.

Kestrel进入了这一局面,我看到一些MS员工在博客上发表了关于它在Linux上托管ASP.NET vNext的信息.

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

从那里它有点模糊.我问自己,为什么Kestrel进入了画面,当看起来Katana可以起到同样的作用,如果你用mono编译它并做了一些努力使它跨平台兼容(也许说起来容易做起来难).

Kestrel和Katana是否有同样的目的?或者是一个专门以某种方式而另一个不是?

Kestrel最终会成为Windows部署的可行选择吗?或者它是否适用于非Windows环境,而Katana仍然是Windows的选择?

我认识到,由于我对Katana/Kestrel缺乏了解,我可能会要求苹果与橘子进行比较,但如果答案是"橘子的酸味比苹果更多",那么IMO就是一个非常有效的答案.

Eil*_*lon 36

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

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

ASP.NET 5没有实现OWIN,但它有一个"桥梁",可以在ASP.NET 5应用程序中使用OWIN组件,包括在Kestrel上运行.

  • 对于像我一样困惑的人,ASP.NET 5不再是一件事了.他们称之为ASP.NET Core 1.0. (10认同)

小智 11

可能是一个老问题,但由于快速谷歌搜索引导我在这里,我想没有人问过类似的问题.

引用ASP.NET 5文档:

红隼

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

选择服务器

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

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

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


Rob*_*ert 8

阅读该问题下的其他答案后,我仍然看不到清晰的画面,因此我进行了一些研究,这是我的结论:

  • OWIN是一个规范,它定义了Web服务器(如Kestrel和Katana提供的服务器)和Web应用程序(由您编写的代码)之间的编程接口。
  • Kestrel来自ASP.NET Core。这是OWIN兼容的Web服务器。
  • Katana来自ASP.NET4.X。这是Microsoft的OWIN实施的一套内容,包括OWIN服务器。

最后但并非最不重要的:

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

    (更新于2019/06/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 5 “重命名为 ASP.NET Core”要好一些。 (3认同)

Aar*_*nLS 5

“Project Katana”包括 Microsoft 为 OWIN 添加对 IIS 的支持,创建 OwinHost.exe,并提供库以允许应用程序与自托管 WebAPI 交互。ASP.NET MVC 5(不是 ASP.NET Core)使用其中一些库(例如 Microsoft.Owin.Security)来通过 OWIN 连接身份/身份验证,但 MVC 5 不支持自托管(尽管可以使用其他工具)。SelfHosting 库仅适用于 WebAPI。

所以“Katana”是一个广义的术语,指的是 OWIN 的主机实现和 Web 应用程序支持:“这些组件包括基础设施组件,例如主机和服务器,以及功能组件,例如身份验证组件和框架绑定例如 SignalR 和 ASP.NET Web API。”

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

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

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