红隼和卡塔纳之间的区别

时间:2014-12-31 23:13:27

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

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

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

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

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

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

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

我认识到由于我对Katana / Kestrel缺乏了解,我可能会要求苹果与橘子比较,但如果答案是“橘子的酸味比苹果更多”,那么IMO就是完美的有效的答案。

4 个答案:

答案 0 :(得分:35)

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

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

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

答案 1 :(得分:10)

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

引用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。

答案 2 :(得分:4)

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

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

最后但并非最不重要:

  • 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

答案 3 :(得分:3)

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

所以&#34; Katana&#34;是一个广义术语,指的是主机实现以及对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."

你可能会看到像&#34;从Katana迁移到ASP.NET Core&#34;它引用了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支持的相同平台上受支持。

相关问题