HTTP模块和OWIN中间件之间的区别

时间:2014-04-07 11:14:26

标签: asp.net owin

我经历了http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana,并想知道HTTP模块和owin中间件之间有什么区别。我能想到的一些指针是

1)Owin中间件将应用程序与主机/服务器分离。因此,我不再需要将我的应用程序逻辑专门挂钩到System.Web

2)Owin中间件按添加顺序执行(不确定HttpModules是否也适用;可能取决于我在web.config中添加它们的方式)

3)HttpModules帮助我附加特定于应用程序事件的代码。 Owin中间件独立于这些事件

请告诉我使用OWIN模块而不是HttpModule的实际示例。

我最终阅读了一些链接 (我会在这里继续添加,当我遇到新内容时) http://www.cloudidentity.com/blog/2013/07/23/securing-a-web-api-with-windows-azure-ad-and-katana/

更新:也许这有我正在寻找的答案 http://www.asp.net/aspnet/overview/owin-and-katana/owin-middleware-in-the-iis-integrated-pipeline

When should I use OWIN Katana?

感谢。

1 个答案:

答案 0 :(得分:17)

1)和3)是正确的,2)对于HttpModules也是如此,所以没有区别。关键是OWIN没有非常复杂的ASP.NET请求基础结构,而且它是独立于主机的。实际上,如果您愿意,可以在另一个.NET应用程序中托管OWIN应用程序。

就我而言,如果您使用基于ASP.NET MVC,WebApi等构建的现代基础架构,请忘记HttpModules。它们是很久以前构建的基础架构的一部分,并且与现代Web开发人员面临的问题截然不同。在OWIN下集成不同的服务通常要容易得多(内置的OAuth身份验证和类似的功能非常方便)。

现在,如果你仍在使用“旧的”WebForms模型开发Web应用程序,那么HttpModules migth仍然是一个更好的选择 - 在OWIN中托管WebForms是可能的(并且可能运行良好),但好处有点消失。但是,如果你想要一个瘦的HTTP端点,那么OWIN真棒!与旧的ASP.NET基础结构相比,它非常轻巧和简单。它与IIS没有强烈关系的事实只是一个顶级的樱桃。就个人而言,我仍然使用它与IIS,虽然我可以肯定看到在不同的服务内使用轻量级HTTP服务器。另外,不要忘记IIS版本与Windows版本绑定 - 使用所有最新功能通常需要在IIS上进行服务器升级。