Microsoft.Owin.Host.SystemWeb和Microsoft.Owin.Host.IIS之间有什么区别

时间:2015-10-27 10:23:20

标签: asp.net .net iis

据我所知,Microsoft.Owin.Host.SystemWeb允许我在IIS上运行OWIN应用程序,但今天我发现了另一个名为Microsoft.Owin.Host.IIS的程序包(据我所知,它的名称)具有类似的用途。< / p>

实际上我认为我错了,包装非常不同。

所以,问题在这里:

  • 这两个包之间有什么区别?
  • 在什么情况下我应该使用哪一个?
  • 最后(可选):有人能给我一个链接,以解释所有ASP.NET 5的混乱吗? (微软创建新的平台/框架/功能比记录它们更快,所以我现在感到非常迷失方向......)

2 个答案:

答案 0 :(得分:4)

回答您的可选问题:

System.Web的问题在于它过于臃肿并与IIS结合在一起。例如,您无法在控制台窗口中托管MVC网站。您被迫在IIS中运行它。 OWIN计划试图通过添加抽象来模块化和解耦Web Stack。

本质上,整个Web Stack被简化为中间件组件的管道(类似于node.js的工作方式)。中间件组件或AppFuncFunc<IDictionary<string, object>,Task>)是一个获取上下文(包含请求,响应和其他东西......)并对其执行某些操作的函数(请求解析,路由,呈现视图,记录东西,...)。然后整个堆栈成为一系列中间件组件:每个组件调用链中的下一个组件,或者通过不调用下一个组件来中断执行。

ASP.NET 5是一种自然演化,它建立在OWIN之上,因此可以实现模块化并消除对System.Web(和IIS)的依赖。现在一切都是选择加入,您甚至可以跨平台运行应用程序(使用.NET Core)。没有OWIN,这是不可能的。

答案 1 :(得分:2)

  

Microsoft创建新平台/框架/功能比记录它们更快

MVC 6,Katana(OWIN)和ASP.NET 6的并发开发并没有真正帮助清除所有这些内容之间的混淆。

据我所知:

Microsoft.Owin.Host.IIS命名空间,程序集和程序包适用于Helios, introduced in this blog post。基本上它意味着在IIS中运行没有ASP.NET的托管代码 - 在此基础上提供您自己的OWIN中间件。

所以你似乎需要Microsoft.Owin.Host.SystemWeb来达到你的目的。这形成了一个OWIN主机,允许您的中间件使用System.Web