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

rtf*_*leg 4 .net asp.net iis

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

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

所以,这里的问题:

  • 这两个包有什么区别?
  • 在什么情况下我应该使用一种或另一种?
  • 最后(可选):有人可以给我一个链接来解释所有 ASP.NET 5 混乱吗?(微软创建新平台/框架/功能的速度比记录它们的速度更快,所以我现在感觉很迷茫……)

mst*_*sen 5

要回答您的可选问题:

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

本质上,整个 Web Stack 被简化为中间件组件的管道(类似于 node.js 做事的方式)。中间件组件或AppFunc( Func<IDictionary<string, object>,Task>) 是一个函数,它接受一个上下文(包含请求、响应和其他东西……)并用它做一些事情(请求解析、路由、渲染视图、记录东西……)。然后整个堆栈变成了一系列中间件组件:每个组件调用链中的下一个组件,或者通过不调用下一个组件来中断执行。

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