什么时候使用OWIN武士刀?

我是OWIN和武士刀的新手。我真的不明白为什么我应该使用OWIN,而我可以使用IIS。简而言之,我的问题是:如果我跳过学习OWIN而使用IIS来管理我的网站,我会失去什么?

我谷歌了一下,但没有一个简单的解释。有一些信息在这里,但他们使用一些术语短语,所以我不能理解它。

71355 次浏览

在asp.net WebApi v2中,OWIN管道是默认的。它最终将成为任何asp.net项目下的标准管道。

我不能把它更好地写在这里:http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

.NET的开放网络接口(OWIN)部分完美地解释了OWIN的目标。

如果没有OWIN, asp.net位将与IIS与应用程序通信的方式相耦合。OWIN抽象了web服务器和框架组件。这意味着您的应用程序代码现在将知道OWIN接口,但不知道为请求提供服务的web服务器。

作为回报,应用程序可以更容易地在主机和潜在的整个平台/操作系统之间移植。例如,在控制台或任何进程中托管应用程序的能力允许Mono轻松地托管它……(树莓派的人)

第二个方面是,它就像一个管道。


Owin Pipeline


你可以在web服务器和你的应用程序之间插入任何中间件(和你想要的) 这使得解决方案更加模块化。您可以开发可重分发的中间件,这些中间件可以影响应用程序的请求/响应,但要将这些模块与应用程序代码分开

为了让自己相信这种模块化方法的好处,可以看看OWIN: http://www.nuget.org/packages?q=owin中可用的nuget包

很多这些包以前是asp.net的核心功能,并已被提取为中间件 例如,使用各种OAuth提供者添加对登录的支持成为基础设施(中间件)的关注点,不再需要成为应用程序代码的一部分:

  • http://www.nuget.org/packages/Microsoft.Owin.Security.Google/ < a href = " http://www.nuget.org/packages/Microsoft.Owin.Security.Google/ " > < / >
  • http://www.nuget.org/packages/Microsoft.Owin.Security.Facebook/ < a href = " http://www.nuget.org/packages/Microsoft.Owin.Security.Facebook/ " > < / >
  • <李> http://www.nuget.org/packages/Microsoft.Owin.Security.ActiveDirectory/ < br > 李…< / >

或者如果你想用可爱的猫图像自动替换你网站上的所有图像,你也可以透明地这样做:

https://github.com/serbrech/Owin.Catify < a href = " https://github.com/serbrech/Owin.Catify " > < / >

编辑:它现在作为一个nuget包可用:Owin。Catify!

这个答案的一个简单版本是武士刀将完全取代系统。Web程序集和旧的ASP。NET管道,它为您提供了更好的灵活性(在更多的场景中使用它,并且只使用您喜欢的部分)和性能。

因此,每个人现在都应该关注它的演变,并准备在最终完成时转换。

下面是我画的一个图表,用来填充微软未能包含在这篇文章中的细节。

enter image description here

OWIN是这样一个标准,它允许应用程序框架在其上运行,而忽略其下面的所有内容。另一方面,OWIN本身利用各种主机适配器来确保它可以与底层web服务器(IIS和许多其他服务器)通信。

我现在正在与Jexus web服务器作者一起研究如何编写主机适配器来桥接OWIN/武士刀和Jexus。我们很高兴了解到OWIN是灵活的和高度可定制的。

< p >参考: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/ < / p >
public interface OWIN
{
void ListenHttpCallAndServeWebPage();
}


namespace Microsoft.OWIN
{
public class Katana : OWIN
{
public void ListenHttpCallAndServeWebPage()
{
// listen to a port for HTTP call and serve web page
}
}
}

是的,没错。OWIN是一个接口,武士刀是OWIN接口的实现。因此,我们经常听到这两个词(OWIN / KATANA)在一起,很多时候我们对这两个词的区别感到困惑。所以,武士刀是微软实现的OWIN接口。假设有另一家名为BIG-BOSS的公司想要创建他们自己的OWIN实现,他们可以这样做,并将他们的实现命名为“BATANA”,并宣传像OWIN / BATANA这样的短语。

所以,为什么是OWIN !!

想象一个国家,那里唯一可用的交通工具是卡车。什么都没有。如果你想买一辆汽车,你会买卡车。嗯,这曾经很好,但是人们开始意识到,他们并不总是需要卡车,特别是当他们想去看电影或买牛奶的时候,驾驶重型卡车不仅消耗高燃料,而且还增加了驾驶压力。但是,如果他们想要运载很多重的东西,卡车非常适合。

然后,那个国家的政府提出了一个汽车制造商的规范。具体规格如下:

  1. 一辆车需要有4个轮子
  2. 车辆必须有转向装置。
  3. 车辆必须有前灯和信号灯。

因此,基于这些规范,任何人都可以根据不同的需求制造车辆,并相应地命名他们的车辆。因此,轿车、皮卡、SUV、面包车等。市场上出现了各种各样的汽车。如果一个人不需要一直带很重的东西,而只是需要一辆车去上班,他/她可以买一辆小轿车。有人可以买SUV,如果他需要更多的动力。

基于上面的例子,我们可以说我们的ASP。NET Web应用程序使用System。Web程序集是重载的(像卡车一样),如果我们想要创建一个小型Web应用程序,我们的目的只是基于一组请求来提供一些文件,我们必然会使用这个重载系统。Web组装(卡车)。现在,OWIN出现了。OWIN是一组定义服务器的规范(我们可以称之为接口)。基于该规范,某些人(如汽车制造商)可以根据特定的问题领域/应用程序需求制造各种服务器。微软以同样的方式为OWIN创建了自己的实现,名为Katana,可以提供Web API。由于WebAPI是一种轻量级技术,不需要完整的系统。Web的东西,一个轻量级的服务器实现(如Katana)可以大大提高性能,当你使用托管在Katana上的Web Api。

现在,如果你问,'我需要它吗?' ?答案是:“这取决于你对性能的需求。”如果你不介意开着你的卡车去看电影,那么,也许你不需要OWIN。但如果你觉得,一辆轻型轿车就能满足你在城市里开车、小距离、看电影等需求。是的,你可以看看市场上有哪些OWIN的实现。武士刀是OWIN的实现之一,因此你可以检查武士刀提供什么。不仅是Katana,如果任何其他公司根据特定的域实现了OWIN(例如,用于下载最新医药信息的医疗设备服务器),如果您是一名医生,也许您可以检查该OWIN的实现。此外,您自己可以针对任何特定的利基创建自己的OWIN实现。

在web应用程序方面,如果您是一个简单的web开发人员,为您的客户开发自定义网站,也许,您不需要担心OWINs的自定义实现,因为IIS将以平衡的方式为您服务。如果您构建一个Web API项目,您将从Visual Studio -> New project中获得基于武士刀的模板,因此除了学习武士刀的特定技术之外,您不必担心任何事情。此时,Katana还不够成熟,无法完全取代ASP对IIS的需求。NET MVC,但也许,在未来它会。

那么什么时候我可能需要写自己的OWIN实现?

答:嗯,举个例子,您开发了一个Windows应用程序,它应该作为服务器在后台运行,并侦听端口号XXXX。你的服务器只会响应一些像这样的请求:

  1. 获得库存
  2. DELETE库存ID=4
  3. PUT库存ID=5

这是所有。没有别的了。那么,为什么您需要一个完整的IIS web服务器来完成这个小任务呢?在这种情况下,您可以创建自己的OWIN实现。(也许,你会使用武士刀)

好的,我明白了,如果我想做一个ASP。NET MVC网站,我没有选择替换IIS,那么为什么我需要知道武士刀在这个时刻?

答:尽管Katana还不够成熟,无法取代IIS的需要,因此您可以托管您的ASP。但是Katana实现了许多很酷的OWIN接口,这样你就可以利用这些功能并排使用的优势。例如,允许用户使用Facebook、谷歌、Twitter等登录之前就不是很容易。武士刀为你提供了许多钩子(作为一个中间件),这样你就可以让武士刀轻松地处理基于外部社交媒体的身份验证,而无需编写管道代码。当你开始使用这种技术时,你会发现使用武士刀还有许多其他的好处。

为什么我应该使用OWIN,而我可以使用IIS?

OWIN旨在将web服务器与您工作的框架分离。对于混合框架和服务器,它可以使应用程序轻量级和可移植。

Katana是微软OWIN组件的实现。

自过去几年以来,微软正在使网络工具更加敏捷和响应,因为他们的计划正在进行中。以ASP开发为例。Net MVC和ASP。Net Web API。他们不依赖于系统。我认为这是一个巨大的负担。优点是可以及时提供开发修复,并且周期比以往任何时候都快。现在开发人员还可以在自定义OWIN主机或Katana上部署这些应用程序,这是OWIN实现的参考。

到底有什么意义?< / em >

微软发布了一个基于IIS的轻量级OWIN网络主机项目,名为“Helios”。目标是避免ASP。NET/IIS的关系,通过提供一些独立的小组件,可以使用,安装和管理独立运行在实现OWIN规范的web主机。

其中一个核心原因是性能因素。Helios将能够实现比标准ASP多2 -3倍的吞吐量。网络应用程序。在内存消耗方面,Helios比System要好得多。Web dll。在一个基准的Helios体系结构中,允许一个示例应用程序实现50000个并发请求,与标准ASP相比开销减少了大约1GB。网络应用程序。

OWIN是web应用程序和托管平台之间的抽象。如果您使用OWIN编写web应用程序,那么您没有绑定到IIS,如果您愿意,您可以使用其他主机。

您问为什么使用OWIN而不是IIS,但这两者不能相互替代。OWIN位于IIS和应用程序之间,因此您可以在不重写应用程序的情况下切换出IIS。

你也可以看看这个页面https://github.com/Bikeman868/OwinFramework/wiki/OWIN