我读了很多关于OWIN和武士刀项目的文章,但我不能得到它的全貌。
对于使用ASP的普通web开发人员。NET:
如果我必须为自己定义OWIN,那将是:“来自Ruby和Node.js web开发社区的最佳想法,来到。net”
但这对任何ASP都没有帮助。网络开发人员。我自己的定义是这样的:
OWIN定义了. net web服务器和web应用程序之间的标准接口。OWIN接口的目标是解耦服务器和应用程序 如果我必须回答你提出的问题,那么这里是:
OWIN是一个接口规范。它将web应用程序与IIS分离。
如果你使用的是现成的组件(Katana就是这样),那么与旧的ASP.NET相比,应用程序的某些部分功能更容易实现。第三方身份认证(Facebook, Twitter)就是一个例子。
关于上面的评论,OWIN不是一个框架。OWIN是一个关于如何构建web服务器和web应用程序的规范,以便将它们解耦并允许ASP的移动。NET应用程序到以前不支持的环境。
在OWIN之前,当构建ASP。. NET应用程序,由于严重依赖System.Web程序集,您固有地绑定到IIS。
System.Web
System.Web是自ASP(非。net版本)以来就存在的东西,在内部包含许多你可能甚至不需要的东西(如Web表单或URL授权),默认情况下,它们都在每个请求上运行,从而消耗资源,使ASP。NET应用程序通常比Node.js等同类应用程序慢得多。
OWIN本身没有任何工具、库或其他东西。这只是一个规范。
另一方面,武士刀是一个完全开发的框架,使目前的ASP之间的桥梁。NET框架和OWIN规范。目前,武士已经成功地改编了以下ASP。NET框架到OWIN:
ASP。NET MVC和Web表单仍然只通过系统运行。Web,从长远来看,也有一个计划去解耦这些。
另一方面,IIS对于web服务器来说是一个很好的、资源丰富的主机。完整的ASP。使用IIS的NET性能问题深深植根于System.Web。直到最近,当你决定如何托管你的web服务器时,你有两个选择:
所以如果你想要表演,你会选择自助主机。如果您想要IIS提供的许多开箱即用的特性,您可以选择IIS,但这样会损失性能。
现在,有第三个选项,一个名为赫利俄斯(当前代号)的微软库,它打算删除System.Web,并允许你以更“干净”的方式使用IIS,没有任何不必要的库或模块。Helios现在是预发布版本,正在等待更多的社区反馈,以使其完全支持微软产品。
希望这个解释能更好地为你澄清事情。
编辑(2014年9月):
ASP。NET vNext正在开发中,武士刀正在慢慢退役。3.0版很可能是武士刀作为独立框架的最后一个主要版本。
然而,武士刀引入的所有概念都被集成到ASP中。NET vNext,这意味着编程模型将基本相同。引用自论坛帖子,由David Fowler (ASP。净vNext):
vNext是武士刀的继承者(这就是为什么它们看起来如此相似)。 武士刀是脱离系统的开始。网络和更多 web堆栈的模块化组件。你可以看到vNext是a 这项工作的继续,但更进一步(新的CLR,新的项目 系统,新的http抽象)。< / p > 今天在武士刀中存在的一切都将进入vNext。
vNext是武士刀的继承者(这就是为什么它们看起来如此相似)。 武士刀是脱离系统的开始。网络和更多 web堆栈的模块化组件。你可以看到vNext是a 这项工作的继续,但更进一步(新的CLR,新的项目 系统,新的http抽象)。< / p >
今天在武士刀中存在的一切都将进入vNext。
编辑(2015年2月):
ASP。NET vNext现在被称为ASP。NET 5将构建在。NET Core 5之上。NET Core 5是。NET Framework的轻量级因子化版本,旨在支持ASP. NET的目标。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来构建的,IHttpHandler是在System.Web中定义的接口。ASP。NET MVC 6消除了这种依赖,使其可移植到各种平台和web服务器。
编辑(2016年5月):
随着release Candidate 2的发布,ASP。NET Core已经被修改,因此未来的web应用程序实际上只是。NET Core控制台应用程序的设置,以处理传入的HTTP请求。这个概念使得ASP。NET Core与微软在微服务架构支持和通过Azure Service Fabric实现的方法更加一致。更多信息可以在官方博客文章中找到: 宣布ASP。NET Core RC2 < / p >
我将试着从实际的角度来讨论它。
Katana是项目名称在微软实现OWIN。
OWIN到底是什么,它能解决什么问题(简单地说)。它与IIS有什么关系? OWIN (打开。net的Web接口)是一个标准(OWIN规范), Katana是。net库,你可以从这里拿鸡块。OWIN和武士刀在网络上成了同义词 在OWIN之前,你唯一的选择是IIS,你可以使用任何其他应用程序(有入口点)作为web服务器。< / p > < p > OWIN会取代IIS吗?如果不是,在什么情况下OWIN最适合? < br > 不,它不会取代IIS,你可以使用OWIN和IIS 有Microsoft.Owin.Host.SystemWeb的nuget。如果你想优化/改变它在IIS中处理的方式,或者你想创建你的自定义web服务器,比如说Windows窗体应用程序 < p > OWIN如何在我的日常工作项目中帮助我? < br > 它可以降低您的服务器运行成本,因为您的web服务器不再需要在IIS (Windows)上运行(Windows服务器比基于Unix的服务器更昂贵,您可以在Linux中的Mono下的控制台应用程序上运行它)。< / p > < p > OWIN如何在自我提升项目中帮助我? < br > 学习Microsoft.Owin(和其他相关的OWIN库)将提高你对客户端和web服务器之间HTTP通信如何工作的知识
IIS
Microsoft.Owin.Host.SystemWeb
Microsoft.Owin
如果你想了解更多关于武士刀和OWIN是什么,很好的阅读
什么是OWIN?
OWIN代表。net的开放Web接口。OWIN是一个规范,描述了web开发框架,如ASP。NET MVC应该与web服务器交互。OWIN的目标是通过引入抽象层将web应用程序与web服务器解耦。这样的抽象使您能够在所有支持OWIN的web服务器上运行相同的应用程序。此外,它还简化了整个系统,因为抽象层可以提供承载应用程序的轻量级基础设施。IIS为web应用程序提供了一组丰富的特性。然而,web应用程序可能不需要所有这些特性。对于它们来说,拥有最小的HTTP处理能力就足够了。OWIN兼容主机可以为这些应用程序提供这样一个托管环境。此外,您可以定义在请求处理期间使用的模块管道。OWIN管道是请求通过的OWIN兼容组件链。
武士刀是什么?
Katana是微软使用OWIN规范构建的一组组件。其中一些组件包括Web API、ASP。NET Identity和SignalR。
以上摘自CodeGuru Article: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm