What exactly is OWIN and what problems does it solve (in simple words). What is its relation to IIS? OWIN(Open Web Interface for .NET)是标准(OWIN Specification)而Katana是.NET库,你可以get nuget from here . OWIN和Katana在网络上成了一些同义词 . 在OWIN之前,您唯一的选择是使用OWIN IIS ,您可以使用任何其他应用程序(具有入口点)作为Web服务器 .
Does OWIN replace IIS? if not, in what situations does OWIN best fit? 不,它不会取代IIS,您可以使用OWIN和IIS there's Microsoft.Owin.Host.SystemWeb nuget for that . 如果您想要优化/更改在IIS中处理它的方式,或者您想要创建自定义Web服务器,那么最适合使用Windows Forms Application .
How could OWIN help me in my daily work projects? 它可以降低您的服务器运行成本,因为您的Web服务器不再需要在IIS(Windows)上运行(Windows服务器比基于Unix的服务器更昂贵,您可以在Linux下的Mono下的控制台应用程序上运行它) .
How could OWIN help me in a self-improvement projects? 学习 Microsoft.Owin (和其他相关的OWIN库)将提高您对客户端和Web服务器之间的HTTP通信如何工作的了解 .
4 回答
关于上述评论,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:
Web API
信号R.
ASP.NET MVC和Web窗体仍然只能通过System.Web运行,从长远来看,还有一个计划将它们分离 .
另一方面,IIS是Web服务器的良好,资源丰富的主机 . 使用IIS的整个ASP.NET性能问题仅在System.Web中有深层根源 . 直到最近一次,在决定如何托管您的Web服务器时,您有两种选择:
IIS
自我主持人
因此,如果您想要一个性能,那么您可以选择自托管选项 . 如果你想要IIS提供很多开箱即用的功能,你就可以选择IIS,但是你会失去性能 .
现在,有一个第三个选项,一个名为Helios(当前代码名称)的Microsoft库,它打算将System.Web移除,并允许您使用更多"cleaner"方式的IIS,而不需要任何不必要的库或模块 . Helios现在处于预发布版本,正在等待更多社区反馈,以使其完全支持Microsoft产品 .
希望这个解释能够更好地为您澄清事情 .
EDIT (Sep 2014):
随着ASP.NET vNext正在开发中,Katana正在慢慢退休 . 3.0版很可能是Katana作为独立框架的最后一个主要版本 .
但是,Katana引入的所有概念都被集成到ASP.NET vNext中,这意味着编程模型将完全相同 . 引自forum post由David Fowler(ASP.NET vNext的架构师)制作:
EDIT (Feb 2015):
ASP.NET vNext现在称为ASP.NET 5,它将构建在.NET Core 5之上..NET Core 5是.NET Framework的轻量级因子版本,旨在支持ASP.NET 5和.NET Native的目标 . 但是,.NET 5 4.6也将支持ASP.NET 5,它应该与.NET Core 5一起提供.ASP.NET 5和.NET Core 5都将在MIT下获得许可并接受社区贡献 .
EDIT (May 2015):
此外,ASP.NET Web API品牌将停止使用,但它的技术将成为新的ASP.NET MVC 6的基础 . 以前的ASP.NET MVC版本是通过实现IHttpHandler(System.Web中定义的接口)构建的 . ASP.NET MVC 6消除了这种依赖性,使其可以移植到各种平台和Web服务器 .
EDIT (May 2016):
ASP.NET 5将正式从Release Candidate 2开始重命名为ASP.NET Core,计划即将发布 . 同样适用于将重命名为Entity Framework Core的Entity Framework 7 . 有关官方声明及其背后原因的更多信息,请参阅Scott Hanselman的博客文章:ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0
EDIT (May 2016):
随着Release Candidate 2的发布,ASP.NET Core已被修改,以便未来的Web应用程序实际上只是.NET Core控制台应用程序设置来处理传入的HTTP请求 . 这一概念使ASP.NET Core更加符合Microsoft在微服务架构支持及其通过Azure Service Fabric实现的方法 . 有关更多信息,请访问官方博客文章:Announcing 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)进行身份验证就是其中的一个例子 .
OWIN本质上是最佳实践的集合,已在Web开发社区中得到验证 . 它展示了一种实现对可扩展性非常开放的Web应用程序的方法 . 由于每个Web开发人员都应该始终站在新技术的最前沿,这是与整个Web开发社区保持同步的一种方式,而不仅仅是.NET . 如果您学习OWIN,那么学习其他Web开发框架(例如Express for node.js或Rack for Ruby)会更容易,因为他们使用的实践是相似的 .
我将尝试从实际角度介绍它 .
Katana的项目名称为to implement OWIN in Microsoft .
What exactly is OWIN and what problems does it solve (in simple words). What is its relation to IIS? OWIN(Open Web Interface for .NET)是标准(OWIN Specification)而Katana是.NET库,你可以get nuget from here . OWIN和Katana在网络上成了一些同义词 .
在OWIN之前,您唯一的选择是使用OWIN
IIS
,您可以使用任何其他应用程序(具有入口点)作为Web服务器 .Does OWIN replace IIS? if not, in what situations does OWIN best fit?
不,它不会取代IIS,您可以使用OWIN和IIS there's Microsoft.Owin.Host.SystemWeb nuget for that . 如果您想要优化/更改在IIS中处理它的方式,或者您想要创建自定义Web服务器,那么最适合使用Windows Forms Application .
How could OWIN help me in my daily work projects?
它可以降低您的服务器运行成本,因为您的Web服务器不再需要在IIS(Windows)上运行(Windows服务器比基于Unix的服务器更昂贵,您可以在Linux下的Mono下的控制台应用程序上运行它) .
How could OWIN help me in a self-improvement projects?
学习
Microsoft.Owin
(和其他相关的OWIN库)将提高您对客户端和Web服务器之间的HTTP通信如何工作的了解 .Good read if you want to understand more on what Katana and OWIN is.
What is OWIN?
OWIN代表.NET的Open Web Interface . OWIN是一个描述ASP.NET MVC等Web开发框架应如何与Web服务器交互的规范 . OWIN的目标是通过引入抽象层将Web应用程序与Web服务器分离 . 这种抽象使您可以在支持OWIN的所有Web服务器上运行相同的应用程序 . 此外,它简化了整个系统,因为抽象层可以提供轻量级基础架构来托管应用程序 . IIS为Web应用程序提供了丰富的功能 . 但是,Web应用程序可能不需要所有这些功能 . 它们具有最小的HTTP处理能力可能就足够了 . OWIN兼容主机可以为这些应用程序提供这样的托管环境 . 此外,您可以定义在请求处理期间使用的模块管道 . OWIN管道是OWIN兼容组件链,请求通过该组件 .
What is Katana?
Katana是Microsoft使用OWIN规范构建的一组组件 . 其中一些组件包括Web API,ASP.NET Identity和SignalR .
以上是CodeGuru文章的摘录:http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm