Sey*_*avi 268 asp.net iis asp.net-mvc owin katana
我是OWIN和Katana的新手.我真的不明白为什么我应该使用OWIN,而我可以使用IIS
.为了简化,我的问题是:如果我跳过学习OWIN并在我的网站上使用IIS,我会失去什么?
我用谷歌搜索,但没有一个简单的解释.有一些信息,在这里,但他们使用的一些术语的短语,所以我无法理解这一点.
Sté*_*ane 276
在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!
Emr*_*ain 207
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
恩,那就对了.OWIN是一个接口,Katana是Microsoft的OWIN接口的实现.因此,我们一起听到这两个词(OWIN/KATANA),很多时候我们对这两个词之间的差异感到困惑.因此,Katana是微软实施的OWIN界面.假设另一家名为BIG-BOSS的公司想要创建他们自己的OWIN实现,他们可以这样做并将其实现命名为"BATANA"并宣传像OWIN/BATANA这样的短语.
所以,为什么OWIN !!!
想想一个可以移动的唯一车辆是卡车的国家.没有其他的.如果你想买车,你会买卡车.好吧,过去服务很好,但人们开始意识到,他们不需要卡车,特别是当他们想去看电影或买牛奶,驾驶重型卡车不仅需要高昂的燃料,而且增加驾驶压力.但是,是的,如果他们想要携带大量重物,那么卡车就能达到目的.
然后,该国政府提出了汽车制造商的规范.规范如下:
因此,根据这些规格,任何人都可以根据不同的需求制造车辆,并且可以相应地命名他们的车辆.因此,轿车,皮卡车,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)可以大大提高性能.
现在,如果你问," 我需要它吗?" 答案是,"这取决于你对表现的需求".如果你不介意开车甚至去看电影,那么,也许你不需要OWIN.但如果您觉得这样,那么您需要在城市中驾驶轻便的轿车,小距离,观看电影等等.是的,您可以查看市场上可用的OWIN的实施情况.Katana是OWIN的实现之一,因此您可以查看Katana提供的内容.不仅Katana,如果任何其他公司根据特定的域实施OWIN(例如,医疗设备的服务器将下载最新的医学信息),如果您是医生,也许,您可以检查OWIN的实施.此外,您自己可以创建自己的OWIN实现,针对任何特定的利基.
在Web应用程序方面,如果您是一名简单的Web开发人员,为您的客户开发自定义网站,也许您不必担心OWIN的自定义实现,因为IIS将以平衡的方式为您服务.如果您构建一个Web API项目,您将从Visual Studio - > New Project中获得基于Katana的模板,因此除了学习Katana特定技术之外,您不必担心任何其他问题.目前,Katana还不够成熟,无法完全取代IIS MVC的需求,但也许将来会如此.
那么当我需要编写自己的OWIN实现时?
答:嗯,比如说,你已经开发了一个Windows应用程序,它应该在后台作为服务器运行并收听端口号XXXX.您的服务器将仅响应一组请求,如下所示:
就这样.没有别的.那么,为什么这个小任务需要一个完整的IIS Web服务器?在这种情况下,您可以创建自己的OWIN实现.(也许,你会使用Katana)
好的,所以我明白,如果我想创建一个ASP.NET MVC网站,我没有替换IIS的选项,那么为什么我现在需要了解Katana呢?
答:尽管Katana还不够成熟以取代IIS的需要,因此您可以直接在Katana上托管ASP.NET MVC网站,但Katana实现了许多OWIN的酷炫界面,以便您可以利用这些功能方面的优势旁边.例如,允许您的用户使用Facebook,Google,Twitter等登录之前并不容易.Katana为您提供了许多钩子(作为中间件),这样您就可以让Katana轻松地处理基于社交媒体的外部身份验证,而无需编写管道代码.当您开始使用此技术时,您可能会发现使用Katana还有许多其他好处.
Lex*_* Li 45
这个答案的一个更简单的版本是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/
nzn*_*oor 14
为什么我应该使用OWIN,而我可以使用IIS?
OWIN旨在将Web服务器与您使用的框架分离.它可以使应用程序轻松,便携,适用于混合框架和服务器.
而Katana是微软对OWIN组件的实现.
自从过去几年以来,随着计划的不断发展,微软正在使网络工具变得更加灵活和敏捷.例如,开发ASP.Net MVC和ASP.Net Web API.他们不依赖于System.Web dll,这是他们现在认为的巨大负担.优点是可以及时提供开发修复,并且循环比以往更快.此外,现在开发人员可以在自定义OWIN主机或Katana上部署这些应用程序,这是OWIN实现的参考.
毕竟有什么意义呢?
微软发布了一个项目,它是一个基于IIS的轻量级基于OWIN的Web主机,称为"Helios".目标是通过提供一些独立的小组件来避免ASP.NET/IIS关系,这些小组件可以在实现OWIN规范的Web主机上独立运行,安装和管理.
其中一个核心原因是性能因素.Helios将能够比标准ASP.Net应用程序实现2x-3倍的吞吐量.在内存消耗方面,Helios比System.Web dll要好得多.在采用的基准测试中,Helios架构允许示例应用程序实现50000个并发请求,与标准ASP.Net应用程序相比,开销减少约1GB.
归档时间: |
|
查看次数: |
67591 次 |
最近记录: |