如何用简单的词语和用法来解释Katana和OWIN?

我读过很多关于OWIN和Katana项目的文章,但我无法得到它的全貌。

对于使用ASP.NET的普通Web开发人员:

  1. OWIN究竟是什么,它解决了什么问题(用简单的话来说)。 它与IIS的关系是什么?
  2. OWIN取代IIS吗? 如果不是,OWIN在什么情况下最适合?
  3. OWIN如何帮助我进行日常工作?
  4. OWIN如何帮助我完成一个自我完善的项目?

关于上面的评论,OWIN不是一个框架。 OWIN是关于如何构buildWeb服务器和Web应用程序以便将其与另一个解耦的允许规范,并允许将ASP.NET应用程序移动到当前状态不可能的环境。

在OWIN之前,当您构buildASP.NET应用程序时,由于对System.Web程序集的依赖性过大,因此您inheritance了IIS。

System.Web自ASP(非.NET版本)以来一直存在,并在内部包含许多您可能甚至不需要的东西(例如Web窗体或URL授权),默认情况下会在每个请求上运行,从而消耗资源并且使得ASP.NET应用程序的总体速度比在Node.js中的对应程序慢得多。

所以OWIN本身没有任何工具,库或其他东西。 这只是一个规范。

另一方面,Katana是完全开发的架构,使得当前ASP.NET框架和OWIN规范之间架起一座桥梁。 目前,Katana已经成功地将以下ASP.NET框架调整为OWIN:

  • Web API
  • 信号R

ASP.NET MVC和Web窗体仍然只能通过System.Web来运行,从长远来看,还有一个解耦的计划。

另一方面,IIS是Web服务器的好主机。 使用IIS的整个ASP.NET性能问题只在System.Web中有深层次的根源。 直到最近,在决定如何托pipe您的Web服务器时,您有两个select:

  • IIS
  • 自托pipe

所以,如果你想要一个性能,你会去自主select。 如果你想要IIS提供的许多开箱即用的function,你会去IIS,但是你会失去性能。

现在,还有第三个选项,一个名为Helios的微软库(当前代码名称),它打算删除System.Web,并允许您以更“干净”的方式使用IIS,而不需要任何不必要的库或模块。 Helios现在处于预发布版本,正在等待更多的社区反馈,以使其完全支持Microsoft产品。

希望这个解释能更好地为你澄清事情。

编辑(2014年9月):

随着ASP.NET vNext的开发,Katana正在慢慢退休。 作为一个独立的框架,3.0版本很可能是Katana的最后一个主要版本。

但是,与Katana一起引入的所有概念正在被整合到ASP.NET vNext中,这意味着编程模型将几乎相同。 David Fowler(ASP.NET vNext架构师) 发表的论坛post引用:

vNext是Katana的继任者(这就是为什么他们看起来如此相似)。 Katana是从System.Web脱离开始,并为Web堆栈提供更多模块化组件的开始。 你可以看到vNext作为这项工作的延续,但是更进一步(新的CLR,新的项目系统,新的http抽象)。

今天在卡塔纳存在的一切将使它成为vNext的方式。

编辑(2015年2月):

ASP.NET vNext现在被称为ASP.NET 5,将构build在.NET Core 5之上。.NET Core 5是.NET Framework的轻量级分解版本,旨在支持ASP.NET 5和.NET Native 。 但是,ASP.NET 5也将得到.NET Framework 4.6的支持,并且可以与.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中定义的接口)构build的。 ASP.NET MVC 6消除了这种依赖性,使其可以移植到各种平台和Web服务器上。

编辑(2016年5月):

ASP.NET 5将从即将发布的Release Candidate 2开始正式更名为ASP.NET Core。 同样适用于将被重命名为entity framework核心的entity framework7。 关于官方公告及其背后原因的更多信息可以在Scott Hanselman的博客文章中find: ASP.NET 5已经死了 – 介绍ASP.NET Core 1.0和.NET Core 1.0

编辑(2016年5月):

随着Release Candidate 2的发布,ASP.NET Core已被修改,以便未来的Web应用程序实际上只是.NET Core控制台应用程序设置来处理传入的HTTP请求。 这个概念使得ASP.NET Core更加符合Microsoft通过Azure Service Fabric支持微服务体系结构支持和实施的方法。 更多信息可以在官方博客上find: 宣布ASP.NET Core RC2

如果我必须为自己定义OWIN,那就是:“来自Ruby和Node.js Web开发社区的最好的想法,来到.NET”

但是,这不会帮助任何ASP.NET开发人员。 我自己的定义应该是:

OWIN定义了.NET Web服务器和Web应用程序之间的标准接口。 OWIN接口的目标是分离服务器和应用程序如果我必须回答你提出的问题,那么这里是:

  1. OWIN是一个接口规范。 它从IIS中分离出Web应用程序。

  2. 如果你正在使用现成的组件(这是Katana的),那么应用程序function的一些部分比旧的ASP.NET更容易实现。 使用第三方身份提供商(Facebook,Twitter)进行身份validation就是一个例子。

  3. OWIN实质上是一套最佳实践,已经在networking开发社区中得到validation。 它展示了一种实现对可扩展性非常开放的Web应用程序的方法。 由于每个Web开发人员都应该不断处于新技术的前沿,这是一种跟上整个Web开发社区而不仅仅是.NET的最新方式。 如果你学习OWIN,学习像Express for node.js或Rack for Ruby这样的其他web开发框架将会容易得多,因为他们使用的实践是相似的。

我会尽力从实际的angular度来加以说明。

武士刀是在微软实施OWIN的项目名称。

OWIN究竟是什么,它解决了什么问题(用简单的话来说)。 它与IIS的关系是什么? OWIN( .NET的Open Web Interface )是一个标准( OWIN规范 ),Katana是.NET库,你可以从这里获得nuget 。 OWIN和Katana在networking上有些同义词。
在OWIN之前,您唯一的select是使用OWIN的IIS ,您可以使用任何其他具有入口点的应用程序作为Web服务器。

OWIN取代IIS吗? 如果不是,OWIN在什么情况下最适合?
不,它不会取代IIS,你可以使用OWIN和IIS 那里的Microsoft.Owin.Host.SystemWeb nuget 。 如果你想优化/改变它在IIS中的处理方式,或者你想创build自定义的Web服务器,比如说Windows窗体应用程序,那么这是最合适的。

OWIN如何帮助我进行日常工作?
由于Web服务器不再需要在IIS(Windows)上运行(Windows服务器比基于Unix的服务器更昂贵,并且可以在Linux下的Mono下的控制台应用程序上运行),因此可以降低服务器运行成本。

OWIN如何帮助我完成一个自我完善的项目?
学习Microsoft.Owin (和其他相关的OWIN库)将会提高您对客户端和Web服务器之间的HTTP通信如何工作的了解。

如果你想更多地了解Katana和OWIN是什么,那么请阅读。

什么是OWIN?

OWIN代表.NET的Open Web Interface。 OWIN是一个规范,它描述了如何使用ASP.NET MVC等Web开发框架与Web服务器进行交互。 OWIN的目标是通过引入抽象层将Web应用程序与Web服务器分离。 这种抽象使您能够在支持OWIN的所有Web服务器上运行相同的应用程序。 此外,它简化了整个系统,因为抽象层可以提供轻量级的基础结构来托pipe应用程序。 IIS为Web应用程序提供了一组丰富的function。 但是,Web应用程序可能不需要所有这些function。 对于他们来说,具有最小的HTTP处理能力可能就足够了。 OWIN兼容主机可以为这些应用程序提供这样的主机环境。 而且,您可以定义请求处理期间使用的模块pipe道。 OWINpipe道是请求经过的OWIN兼容组件链。

什么是武士刀?

Katana是由微软使用OWIN规范构build的一组组件。 其中一些组件包括Web API,ASP.NET身份和SignalR。

以上是从CodeGuru文章摘录: http : //www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm