我读过很多关于OWIN和Katana项目的文章,但我无法了解它的全貌。
对于使用ASP.NET的普通Web开发人员:
关于上面的评论,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.NETMVC和Web窗体仍然只通过System. Web运行,从长远来看,也有计划将它们分离。
另一方面,IIS是一个很好的、足智多谋的Web服务器主机。使用IIS的整个ASP.NET性能问题都深深植根于System. Web
。直到最近,在决定如何托管Web服务器时,您有两个选择:
所以如果你想要一个性能,你会选择自我托管。如果你想要IIS提供的许多开箱即用的功能,你会选择IIS但是你会失去性能。
现在,有第三个选择,一个名为Helios(当前代号)的微软库,它打算删除System. Web
,让你以更“干净”的方式使用IIS,没有任何不必要的库或模块。Helios现在是预发布版本,正在等待更多的社区反馈,以使其完全支持微软产品。
希望这个解释能更好地为你澄清事情。
编辑(2014年9月):
随着ASP.NETvNext的开发,Katana正在慢慢退役。3.0版很可能是Katana作为独立框架的最后一个主要版本。
然而,武士刀引入的所有概念都被集成到ASP.NETvNext中,这意味着编程模型将几乎相同。引用自David Fowler(ASP.NETvNext架构师)的论坛帖子:
vNext是Katana的继任者(这就是为什么它们看起来如此相似)。Katana是脱离System. Web和Web堆栈更多模块化组件的开始。您可以将vNext视为这项工作的延续,但更进一步(新的CLR,新的项目系统,新的超文本传输协议抽象)。
今天武士刀中存在的一切都将进入vNext。
编辑(2015年2月):
ASP.NETvNext现在被称为ASP.NET5,将建立在.NETCore 5.NETCore 5是.NETFramework的轻量级分解版本,旨在支持ASP.NET5和.NETNative的目标。但是,ASP.NET5也将得到.NETFramework 4.6的支持,该框架应与.NETCore 5一起提供。ASP.NET5和.NETCore 5都将根据MIT获得许可,并将接受社区贡献。
编辑(2015年5月):
此外,ASP.NET网络API品牌将停产,但它的技术将成为新ASP.NETMVC6的基础。以前的ASP.NETMVC版本是通过实现IHttpHandler构建的,IHttpHandler是在System. Web
中定义的接口。ASP.NETMVC6消除了这种依赖,使其可移植到各种平台和网络服务器。
编辑(2016年5月):
ASP.NET5将正式更名为ASP.NET核心,从计划很快发布的候选版本2开始。同样的情况也适用于实体框架7,它将更名为实体框架核心。关于官方声明及其背后原因的更多信息,可以在斯科特·汉塞尔曼的博客文章中找到:ASP.NET5已经死了——介绍ASP.NET核心1.0和。NET核心1.0
编辑(2016年5月):
随着候选版本2的发布,ASP.NETCore已经被修改,以便未来的Web应用程序实际上是公正的。NETCore控制台应用程序设置来处理传入的HTTP请求。这一概念使ASP.NETCore更加符合微软在微服务架构支持及其通过Azure Service Fabric实现方面采取的方法。更多信息可以在官方博客文章中找到:宣布ASP.NETCore RC2
如果我必须为自己定义OWIN,那就是:“来自Ruby和Node. js Web开发社区的最佳想法,即将到来。NET”
但这对任何ASP.NET开发人员都没有帮助。我自己的定义是:
OWIN定义了NETWeb服务器和Web应用程序之间的标准接口。OWIN接口的目标是解耦服务器和应用程序。如果我必须回答你提出的问题,那么这里是:
>
OWIN是一种接口规范,它将Web应用程序与IIS分离。
如果您使用的是现成的组件(这就是Katana),那么与旧ASP.NET相比,应用程序功能的某些部分更容易实现。与第三方身份提供商(Facebook、Twitter)的身份验证就是一个例子。
我将尝试从实践的角度来介绍它。
Katana是在Microsoft中实现OWIN的项目名称。
OWIN到底是什么,它解决了什么问题(简而言之)。它与IIS有什么关系?OWIN(NET的开放网络接口)是一个标准(OWIN规范),Katana是。NET库,你可以从这里获得nuget。OWIN和Katana在网络上变得有些同义词。
在OWIN之前,你唯一的选择是IISOWIN,你可以使用任何其他应用程序(有切入点)作为网络服务器。
OWIN是否取代IIS?如果不是,OWIN最适合什么情况?
不,它不能取代IIS,您可以使用OWIN,IIS有Microsoft.Owin.Host。SystemWeb
nuget。如果您想优化/更改它在IIS中的处理方式,或者您想使用Windows窗体应用程序创建自定义Web服务器,它最适合。
OWIN如何在我的日常工作项目中帮助我?
它可以降低您的服务器运行成本,因为您的Web服务器不再需要在IIS(Windows)上运行(Windows服务器比基于Unix的服务器更昂贵,您可以在LinuxMono下的控制台应用程序上运行它)。
OWIN如何帮助我进行自我改进项目?
学习Microsoft. Owin
(和其他相关的OWIN库)将提高您对客户端和Web服务器之间HTTP通信工作原理的了解。
如果你想了解更多关于武士刀和OWIN的内容,那就好读了。