首页 文章

我什么时候应该使用OWIN Katana?

提问于
浏览
267

我是OWIN和Katana的新手 . 我真的不明白为什么我应该使用OWIN,而我可以使用 IIS . 为了简化,我的问题是:如果我跳过学习OWIN并在我的网站上使用IIS,我会失去什么?

我用谷歌搜索,但没有一个简单的解释 . 有一些信息here,但他们使用一些行话短语,所以我无法理解 .

5 回答

  • 45

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

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

    第"The Open Web Interface for .NET (OWIN)"节完全解释了OWIN的目标 .

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

    作为回报,可以更轻松地在主机和可能的整个平台/操作系统之间移植应用程序 . 例如,在控制台或任何进程中托管应用程序的能力允许Mono毫不费力地托管它...(Raspberry Pi任何人)

    第二个方面是它作为管道工作 .


    Owin Pipeline


    您可以在Web服务器和应用程序之间插入任何中间件(以及任意多个) .
    这允许更多模块化解决方案 . 您可以开发可再分发的中间件,这些中间件可能影响来自/来自应用程序的请求/响应,但是将这些模块与应用程序代码分开 .

    为了说服自己采用这种模块化方法的好处,请查看OWIN可用的nuget包:http://www.nuget.org/packages?q=owin

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

    或者,如果您想通过可爱的猫咪图像自动替换您网站上的所有图像,您也可以透明地执行此操作:

    https://github.com/serbrech/Owin.Catify

    编辑:它现在作为nuget包提供:Owin.Catify

  • 274
    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是 interface ,而Katana是 Microsoft 的OWIN接口的 implementation . 因此,我们一起听到这两个词(OWIN / KATANA),很多时候我们对这两个词之间的差异感到困惑 . 因此,Katana是微软's implementation of OWIN interface. Say there is another company named BIG-BOSS who wanted to create their own implementation of OWIN, they can do that and name their implementation as ' BATANA'并宣传像OWIN / BATANA这样的短语 .

    So, why OWIN !!!

    想想一个可用于移动的唯一车辆是卡车的国家 . 没有其他的 . 如果你想买车,你会买卡车 . 嗯,过去服务好,但人们开始意识到,他们不需要卡车,特别是当他们想去看电影或买牛奶,驾驶重型卡车不仅需要高昂的燃料,而且增加驾驶压力 . 但是,是的,如果他们想要携带大量重物,那么卡车就能达到目的 .

    然后,该国政府提出了汽车制造商的规范 . 规格如下:

    • 车辆需要有4个车轮

    • 车辆必须有转向 .

    • 车辆必须有前照灯和信号灯 .

    因此,根据这些规格,任何人都可以根据不同的需求制造车辆,并且可以相应地命名他们的车辆 . 因此,轿车,皮卡车,SUV,VAN,..等各种车型都出现在市场上 . 如果有人不需要随身携带沉重的东西,而只需要车辆去工作场所,他/她可以买一个小轿车 . 如果他需要更多动力,有人可以购买SUV .

    基于上面的例子,我们可以说我们的ASP.NET Web应用程序使用了大量加载的System.Web程序集(如卡车),如果我们想制作一个小的Web应用程序,我们的目的只是为了提供一些基于文件的文件在一小组请求中,我们必然会使用那个繁重的System.Web程序集(卡车) . 现在,OWIN出现了 . OWIN是一组定义服务器的规范(我们可以称之为接口) . 根据该规范,某人(如汽车制造商)可以根据特定的问题域/应用需求制作各种服务器 . Microsoft以与提供Web API相同的方式为OWIN创建了自己的名为Katana的实现 . 由于WebAPI是一种轻量级技术,它不需要完整的System.Web,因此当您使用Katana上托管的Web Api时,轻量级服务器实现(如Katana)可以大大提高性能 .

    现在,如果你问,' Do I need it ' ? Answer is, '这取决于你对性能的需求'. If you don'介意驾驶你的卡车即使是去看电影,那么,也许你不需要OWIN . 但是,如果你觉得,一辆轻量级的轿车就是你需要在一个城市内驾驶,小距离,看电影......等等,你可以查一下OWIN在市场上有哪些实现 . Katana是OWIN的一个实现,因此您可以查看Katana提供的内容 . 不仅Katana,如果任何其他公司根据特定的域实施OWIN(例如,医疗设备的服务器将下载最新的医学信息),如果您是医生,也许,您可以检查OWIN的实施 . 此外,您自己可以创建自己的OWIN实现,针对任何特定的利基 .

    在Web应用程序方面,如果您是一名简单的Web开发人员,为您的客户开发自定义网站,也许您不必担心OWIN的自定义实现,因为IIS将以 balancer 的方式为您服务 . 如果您构建一个Web API项目,您将从Visual Studio - > New Project中获得基于Katana的模板,因此除了学习Katana特定技术之外,您不必担心任何其他问题 . 目前,Katana还不够成熟,无法完全取代IIS MVC的需求,但也许将来它会 .

    Then When I may need to write my own OWIN Implementation ?

    答:嗯,比如说,你开发了一个Windows应用程序,它应该在后台作为服务器运行并收听端口号XXXX . 您的服务器将仅响应一组请求,如下所示:

    • 获取库存

    • DELETE库存ID = 4

    • PUT库存ID = 5

    就这样 . 没有别的 . 那么,为什么这个小任务需要一个完整的IIS Web服务器?在这种情况下,您可以创建自己的OWIN实现 . (也许,你会使用Katana)

    Ok, so I understood that, if I want to make a ASP.NET MVC website, I don't have the option to replace IIS, then why should I need to know about Katana at this moment ?

    答:尽管Katana还不够成熟以取代IIS的需要,因此您可以直接在Katana上托管您的ASP.NET MVC网站,但Katana实现了许多OWIN的酷炫界面,以便您可以利用这些功能方面的优势旁边 . 例如,允许您的用户使用Facebook,Google,Twitter等登录之前并不容易 . Katana为您提供了许多钩子(作为中间件),这样您就可以让Katana轻松地处理基于社交媒体的外部身份验证,而无需编写管道代码 . 当您开始使用此技术时,您可能会发现使用Katana还有许多其他好处 .

  • 0

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

    所以每个人都应该现在观察它的演变,并准备好在它最终完成时进行切换 .

    下面是我绘制的图表,用于填写Microsoft未能包含在this article中的详细信息 .

    enter image description here

    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/

  • 205

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

    OWIN旨在将Web服务器与您使用的框架分离 . 它可以使应用程序轻松,便携,适用于混合框架和服务器 .

    而Katana是微软对OWIN组件的实现 .

    自从最近几年以来,随着计划的不断发展,微软正在使网络工具变得更加灵活和敏捷 . 例如,开发ASP.Net MVC和ASP.Net Web API . 他们不依赖于System.Web dll,这是他们现在认为的巨大负担 . 优点是可以及时提供开发修复,并且循环比以往更快 . 此外,现在开发人员可以在自定义OWIN主机或Katana上部署这些应用程序,这是OWIN实现的参考 .

    What's the point after all?

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

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

  • 14

    OWIN是Web应用程序和托管平台之间的抽象 . 如果使用OWIN编写Web应用程序,则不依赖于IIS,如果愿意,可以使用其他主机 .

    你问为什么使用OWIN而不是IIS,但这些不是彼此的替代品 . OWIN位于IIS和您的应用程序之间这样您就可以在不重写应用程序的情况下切换IIS .

    您可能还想看看这个页面https://github.com/Bikeman868/OwinFramework/wiki/OWIN

相关问题