我已经阅读了许多有关OWIN和Katana项目的文章,但我无法了解它的全部情况。
对于使用ASP.NET的普通Web开发人员:
- OWIN到底是什么,它可以解决哪些问题(简单来说)。它与IIS有什么关系?
- OWIN是否可以替代IIS?如果没有,OWIN最适合什么情况?
- OWIN如何在我的日常工作项目中为我提供帮助?
- OWIN如何帮助我进行自我完善项目?
我已经阅读了许多有关OWIN和Katana项目的文章,但我无法了解它的全部情况。
对于使用ASP.NET的普通Web开发人员:
Answers:
关于以上评论,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的建筑师)在论坛上发表的帖子:
vNext是Katana的后继产品(这就是它们看上去如此相似的原因)。Katana是脱离System.Web并转向Web堆栈的更多模块化组件的开始。您可以将vNext视为这项工作的延续,但可以做得更多(新的CLR,新的项目系统,新的http抽象)。
片假名中现有的所有内容都将进入vNext。
编辑(2015年2月):
ASP.NET vNext现在称为ASP.NET 5,它将建立在.NET Core 5之上。.NETCore 5是.NET Framework的轻量级版本,旨在支持ASP.NET 5和.NET Native的目标。 。但是,.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月):
从计划不久发布的候选版本2开始,ASP.NET 5将正式重命名为ASP.NET Core。同样适用于Entity Framework 7,它将重命名为Entity Framework Core。有关正式公告及其背后原因的更多信息,请参见Scott Hanselman的博客文章: ASP.NET 5已死-ASP.NET Core 1.0和.NET Core 1.0的引入
编辑(2016年5月):
随着版本候选版本2的发布,对ASP.NET Core进行了修改,以便将来的Web应用程序实际上只是用于处理传入HTTP请求的.NET Core控制台应用程序。这个概念使ASP.NET Core与Microsoft在提供微服务架构支持及其通过Azure Service Fabric实施方面所采用的方法更加一致。有关更多信息,请参见官方博客文章: 宣布ASP.NET Core RC2
如果我必须为自己定义OWIN,那就应该是:“来自Ruby和Node.js Web开发社区的最佳创意,即将出现在.NET上”
但这对任何ASP.NET开发人员都没有帮助。我自己的定义是:
OWIN在.NET Web服务器和Web应用程序之间定义了标准接口。OWIN界面的目标是使服务器与应用程序脱钩。如果我必须回答您提出的问题,那么这里是:
OWIN是一种接口规范。它将Web应用程序与IIS分离。
如果您使用的是现成的组件(Katana就是这样),则与旧的ASP.NET相比,应用程序功能的某些部分要易于实现。与第三方身份提供商(Facebook,Twitter)的身份验证就是一个例子。
我将尝试从实际角度进行介绍。
Katana是在Microsoft中实施OWIN的项目名称。
OWIN到底是什么,它可以解决哪些问题(简单来说)。它与IIS有什么关系?
OWIN(.NET的开放Web接口)是一个标准(OWIN规范),而Katana是.NET库,您可以从这里获取nuget。OWIN和Katana在网络上变得有些代名词。
在OWIN之前,您唯一的选择是IIS
使用OWIN,您可以将任何其他应用程序(具有入口点)用作Web服务器。
OWIN是否可以替代IIS?如果没有,OWIN最适合什么情况?
不,它不能替代IIS,您可以使用OWIN和IIS,但有一些Microsoft.Owin.Host.SystemWeb
缺点。如果您要优化/更改IIS中的处理方式,或者要使用Windows窗体应用程序来创建自定义Web服务器,则是最合适的选择。
OWIN如何在我的日常工作项目中为我提供帮助?
由于Web服务器不再需要在IIS(Windows)上运行(Windows服务器比基于Unix的服务器昂贵,并且可以在Linux的Mono下的Console Application上运行),因此可以减少服务器的运行成本。
OWIN如何帮助我进行自我完善项目?
学习Microsoft.Owin
(以及其他相关的OWIN库)将提高您对客户端和Web服务器之间HTTP通信如何工作的了解。
什么是OWIN?
OWIN代表.NET的Open Web Interface。OWIN是描述Web开发框架(如ASP.NET MVC)应如何与Web服务器交互的规范。OWIN的目标是通过引入抽象层将Web应用程序与Web服务器分离。这样的抽象使您可以在所有支持OWIN的Web服务器上运行相同的应用程序。另外,由于抽象层可以提供轻量级的基础结构来承载应用程序,因此它简化了整个系统。IIS为Web应用程序提供了一组丰富的功能。但是,Web应用程序可能不需要所有这些功能。对于他们来说,拥有最少的HTTP处理能力可能就足够了。OWIN兼容主机可以为这些应用程序提供这样的托管环境。此外,您可以定义在请求处理期间使用的模块的管道。OWIN管道是请求通过的OWIN兼容组件链。
什么是武士刀?
Katana是Microsoft使用OWIN规范构建的一组组件。其中一些组件包括Web API,ASP.NET Identity和SignalR。
上面摘自CodeGuru文章:http : //www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm