我是OWIN和Katana的新手。我真的不明白为什么我应该使用OWIN,而我却可以使用IIS
。为简单起见,我的问题是:如果我跳过学习OWIN并将IIS用于我的网站,将会失去什么?
我用谷歌搜索,但没有简单的解释。有一些信息,在这里,但他们使用的一些术语的短语,所以我无法理解这一点。
我是OWIN和Katana的新手。我真的不明白为什么我应该使用OWIN,而我却可以使用IIS
。为简单起见,我的问题是:如果我跳过学习OWIN并将IIS用于我的网站,将会失去什么?
我用谷歌搜索,但没有简单的解释。有一些信息,在这里,但他们使用的一些术语的短语,所以我无法理解这一点。
Answers:
在asp.net WebApi v2中,OWIN管道成为默认管道。它最终将成为任何asp.net项目下的标准管道。
我不能说比这里写的更好:http : //www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
该节“开放Web接口.NET(OWIN)”完美地解释OWIN的目标。
如果没有OWIN,asp.net位将耦合到IIS与应用程序通信的方式。OWIN抽象化Web服务器和框架组件。这意味着您的应用程序代码现在将知道OWIN接口,但不知道正在处理请求的Web服务器。
作为回报,可以更轻松地在主机与潜在的整个平台/操作系统之间移植应用程序。例如,在控制台或任何进程中托管应用程序的能力使Mono可以毫不费力地托管它...(任何人都可以使用Raspberry Pi)
第二个方面是它可以用作管道。
您可以在Web服务器和您的应用程序之间插入任何中间件(以及任意数量的中间件)。
这允许更多的模块化解决方案。您可以开发可再发行的中间件,这些中间件可能影响到/来自应用程序的请求/响应,但要将这些模块与应用程序代码分开。
为了说服这种模块化方法的好处,请看一下可用于OWIN的nuget软件包:http ://www.nuget.org/packages?q = owin
这些软件包中有很多以前是asp.net的核心功能,因此已被提取为中间件。
例如,使用各种OAuth提供程序添加对登录的支持已成为基础架构问题(中间件),并且不再需要成为您的应用程序代码的一部分:
或者,如果您想用可爱的猫咪图像自动替换网站中的所有图像,也可以透明地进行:
https://github.com/serbrech/Owin.Catify
编辑:现在可以作为nuget包使用:Owin.Catify!
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是接口,而Katana是Microsoft的OWIN接口的实现。因此,我们一起听到了这两个词(OWIN /片假名),而且很多时候我们对这两个词之间的区别感到困惑。因此,Katana是Microsoft的OWIN接口的实现。假设还有一家名为BIG-BOSS的公司想要创建自己的OWIN实现,他们可以做到并将其实现命名为“ BATANA”,并宣传诸如OWIN / BATANA之类的短语。
所以,为什么要赢!
想想一个唯一可以移动的车辆是卡车的国家。没有其他的。如果您想购买车辆,则可以购买卡车。是的,过去曾经很好用,但是人们开始意识到,他们一直不需要卡车,特别是当他们想去看电影或买牛奶时,驾驶重型卡车不仅耗费了高油价,而且还增加驾驶压力。但是,是的,如果他们想搬运很多重物,卡车可以很好地达到目的。
然后,那个国家的政府提出了针对汽车制造商的规范。规格如下:
因此,基于这些规范,任何人都可以根据不同的需求制造车辆,并且可以相应地命名其车辆。因此,市场上出现了轿车,皮卡车,SUV,VAN等各种车辆。如果某人不需要一直搬运沉重的东西,而只需要去上班的车辆,则可以购买一辆小轿车。如果某人只需要一点力量,就可以购买SUV。
根据以上示例,我们可以说我们的ASP.NET Web应用程序使用了System.Web Assembly,它负载很重(例如卡车),如果我们要制作一个小型Web应用程序,其目的只是基于在少量请求下,我们势必会使用大量的System.Web程序集(卡车)。现在,OWIN出现了。OWIN是定义服务器的一组规范(我们可以称其为接口)。根据该规范,某人(例如车辆制造商)可以根据特定的问题域/应用程序需求制造各种服务器。微软以可以服务Web API的相同方式为OWIN创建了自己的实现,名为Katana。由于WebAPI是一种轻量级的技术,不需要完整的System.Web东西,
现在,如果您问:“ 我需要吗?答案是,“这取决于您对性能的需求”。如果您不介意开车去看电影,那么也许您不需要OWIN。但是,如果您感觉到,那么重量轻的轿车是您在城市内驾驶,小距离行驶,看电影等等的全部。是的,您可以查看市场上可用的OWIN实施方案。Katana是OWIN的实现之一,因此您可以检查Katana提供的功能。不仅是Katana,如果任何其他公司根据特定的域实施OWIN(例如,用于医疗设备的服务器,该服务器将下载最新的药物信息),并且如果您是医生,也许可以检查OWIN的实施情况。此外,您自己可以针对任何特定细分市场创建自己的OWIN实现。
在Web应用程序方面,如果您是一名简单的Web开发人员,也许可以为客户开发自定义网站,则无需担心OWIN的自定义实现,因为IIS将为您提供平衡的服务。如果您构建一个Web API项目,则可以从Visual Studio-> New Project准备好基于Katana的模板,因此除了学习特定于Katana的技术外,您无需担心其他任何事情。目前,Katana还不够成熟,无法完全替代ASP.NET MVC对IIS的需求,但也许将来会。
那我何时可能需要编写自己的OWIN实现?
答:好,例如,您开发了一个Windows应用程序,该应用程序应在后台作为服务器运行,并监听端口号XXXX。您的服务器将仅响应以下一组请求:
就这样。没别的。那么,为什么您需要一个完整的IIS Web服务器来完成此小任务?在这种情况下,您可以创建自己的OWIN实现。(也许,您将为此使用片假名)
好的,所以我了解到,如果我想创建一个ASP.NET MVC网站,则没有替代IIS的选项,那么为什么现在我需要了解Katana?
答:尽管Katana还不够成熟,无法取代IIS的需要,因此您可以直接在Katana上托管ASP.NET MVC网站,但是Katana实现了OWIN的许多很酷的接口,以便您可以充分利用这些功能并排。例如,允许您的用户使用Facebook,Google,Twitter等登录并不容易。Katana为您提供了许多挂钩(作为中间件),因此您可以让Katana轻松地处理基于外部Social Media的身份验证,而无需编写管道代码。当您开始使用这项技术时,使用片假名还有很多其他好处。
what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
这个答案的一个简单版本是,Katana可以完全替代System.Web程序集和旧的ASP.NET管道,这可以为您提供更好的灵活性(在更多方案中使用它,并且仅使用所需的部件)和性能。
因此,每个人都应该立即观察它的发展,并准备在最终完成时进行切换。
下面是我用来填写Microsoft在本文中未包含的详细信息的图表。
OWIN是这样一种标准,它允许应用程序框架在其上运行,而忽略了其下面的所有内容。另一方面,OWIN本身利用各种主机适配器来确保可以与基础Web服务器(IIS和许多其他服务器)进行通信。
我现在正在与Jexus Web服务器作者合作,研究如何编写主机适配器来桥接OWIN / Katana和Jexus。我们非常高兴得知OWIN灵活且高度可定制。
参考:http: //blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/
System.Web
。
为什么我可以使用IIS,但为什么要使用OWIN?
OWIN旨在使Web服务器与您所使用的框架脱钩。它可使混合框架和服务器的应用程序轻巧且可移植。
Katana是Microsoft的OWIN组件的实现。
自从最近几年以来,随着计划的发展,Microsoft使Web工具变得更加敏捷,响应更快。例如,开发ASP.Net MVC和ASP.Net Web API。他们不依赖System.Web dll,这是他们现在觉得的沉重负担。优势在于可以及时提供两个开发修复程序,并且周期比以往更快。现在,开发人员还可以在自定义OWIN主机或Katana上部署这些应用程序,这是OWIN实现的参考。
到底有什么意义?
微软已经发布了一个名为IIS的项目,该项目是基于IIS的基于OWIN的轻量级Web主机。目的是通过提供一些独立的小组件来避免ASP.NET/IIS的关系,这些组件可以在实现OWIN规范的Web主机上独立运行,安装和管理。
核心原因之一是性能因素。Helios将能够实现比标准ASP.Net应用程序高2到3倍的吞吐量。在内存消耗方面,Helios比System.Web dll更好。与基准ASP.Net应用程序相比,Helios体系结构在允许的基准测试中使示例应用程序可以实现50000个并发请求,而开销却减少了大约1GB。
OWIN是Web应用程序和托管平台之间的抽象。如果使用OWIN编写Web应用程序,则不依赖IIS,可以根据需要使用其他主机。
您问为什么要使用OWIN而不是IIS,但这不是彼此的替代品。OWIN位于IIS和您的应用程序之间,因此您可以在不重写应用程序的情况下关闭IIS。
您可能还想查看此页面https://github.com/Bikeman868/OwinFramework/wiki/OWIN