关于上面的评论,OWIN 不是一个框架。 OWIN 是关于如何构建 Web 服务器和 Web 应用程序的规范,以便将它们解耦并允许将 ASP.NET 应用程序移动到以前不支持的环境中。
在 OWIN 之前,在构建 ASP.NET 应用程序时,由于对 System.Web 程序集的严重依赖,您天生就绑定到 IIS。
System.Web 是自 ASP(非 .NET 版本)以来就存在的东西,内部包含许多您甚至可能不需要的东西(例如 Web 表单或 URL 授权),默认情况下它们都会在每个请求上运行,因此消耗资源并使 ASP.NET 应用程序通常比 Node.js 等同类应用程序慢很多。
OWIN 本身没有任何工具、库或其他任何东西。这只是一个规范。
另一方面,Katana 是一个完全开发的框架,用于在当前的 ASP.NET 框架和 OWIN 规范之间架起一座桥梁。目前,Katana 已成功将以下 ASP.NET 框架适配到 OWIN:
ASP.NET MVC 和 Web 窗体仍仅通过 System.Web 运行,从长远来看,也有计划将它们解耦。
另一方面,IIS 是一个很好的、资源丰富的 Web 服务器主机。使用 IIS 的整个 ASP.NET 性能问题仅源于 System.Web。直到最近,在决定如何托管 Web 服务器时,您有两个选择:
因此,如果您想要表演,您会选择自托管选项。如果您想要 IIS 提供的许多开箱即用的功能,您会选择 IIS,但您会失去性能。
现在,有第三个选项,一个名为 Helios(当前代号)的 Microsoft 库,它打算删除 System.Web,并允许您以更“清洁”的方式使用 IIS,而无需任何不必要的库或模块。 Helios 现在处于预发布版本,正在等待更多社区反馈,以使其完全支持 Microsoft 产品。
希望这个解释能更好地为你澄清事情。
编辑(2014 年 9 月):
随着 ASP.NET vNext 的开发,Katana 正在慢慢退役。 3.0 版很可能是 Katana 作为独立框架的最后一个主要版本。
但是,Katana 引入的所有概念都被集成到 ASP.NET vNext 中,这意味着编程模型将几乎相同。引用来自 David Fowler(ASP.NET vNext 架构师)的forum post:
vNext 是 Katana 的继承者(这就是它们看起来如此相似的原因)。
Katana 是从 System.Web 和其他方面脱离的开始
Web 堆栈的模块化组件。您可以将 vNext 视为
继续这项工作,但走得更远(新 CLR,新项目
系统,新的 http 抽象)。
今天存在于 Katana 中的所有内容都将进入 vNext。
编辑(2015 年 2 月):
ASP.NET vNext 现在称为 ASP.NET 5,将构建在 .NET Core 5 之上。.NET Core 5 是 .NET Framework 的轻量级版本,旨在支持 ASP.NET 5 和.NET 本机。但是,.NET Framework 4.6 也将支持 ASP.NET 5,它应该与 .NET Core 5 一起提供。ASP.NET 5 和 .NET Core 5 都将在 MIT 下获得许可,并接受社区贡献。
编辑(2015 年 5 月):
此外,ASP.NET Web API 品牌将停产,但它的技术将成为新 ASP.NET MVC 6 的基础。以前的 ASP.NET MVC 版本是通过实现 IHttpHandler(System.Web 中定义的接口)构建的。 ASP.NET MVC 6 消除了这种依赖性,使其可移植到各种平台和 Web 服务器。
编辑(2016 年 5 月):
ASP.NET 5 将从计划很快发布的候选版本 2 开始正式重命名为 ASP.NET Core。同样适用于 Entity Framework 7,它将被重命名为 Entity Framework Core。有关官方公告及其背后原因的更多信息,请参阅 Scott Hanselman 的博客文章:
ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0
编辑(2016 年 5 月):
随着 Release Candidate 2 的发布,ASP.NET Core 已经过修改,因此未来的 Web 应用实际上只是 .NET Core 控制台应用设置来处理传入的 HTTP 请求。这一概念使 ASP.NET Core 更加符合 Microsoft 采用的微服务架构支持及其通过 Azure Service Fabric 实施的方法。更多信息可以在官方博客文章中找到:
Announcing ASP.NET Core RC2