ASP.NET4和ASP.NET5 Http管道之间有什么区别?

时间:2014-12-04 13:18:04

标签: asp.net pipeline asp.net-4.5 asp.net-core .net-4.6

我已经阅读了.NET4.6中的新内容以及我非常兴奋的is ASP.NET 5内容之一。

其中一件新事物是New modular HTTP request pipeline,但是没有更多关于它究竟会如何改变的信息。

唯一的reference in the article is

  

ASP.NET 5引入了一个精简的新HTTP请求管道   快速。此管道是模块化的,因此您只能添加组件   你需要。通过减少管道中的开销,您的应用程序将会   体验更好的吞吐量新管道也支持OWIN。

ASP.NET4.5和ASP.NET5 Http管道之间有哪些主要区别?如何控制模块化?

1 个答案:

答案 0 :(得分:6)

我认为的最大区别在于新请求管道的模块化。在过去,应用程序生命周期遵循一条相对严格的路径,您可以通过实现IHttpModule.的类来实现这一点。这将允许您影响请求,但仅限于在此过程中的某些点,通过订阅发生的不同事件(例如BeginRequest, AuthenticateRequest,等)。

可以在MSDN上找到有关这些内容的完整说明:IIS 5 & 6IIS 7,创建此类模块的演练可以是found here.

在新的ASP.NET 5世界中,请求管道与System.Web和IIS分离。它使用中间件的概念,而不是预定义的路径。如果您熟悉OWIN,那么这个想法是nearly identical,但基本的想法是注册这些中间件组件,然后请求按照它们注册的顺序通过它们。

为每个中间件组件提供RequestDelegate(管道中的下一个中间件组件)和每个请求的当前HttpContext。在每个请求上,调用该组件,然后有机会将请求传递给链中的下一个(如果适用)。例如,如果身份验证失败,身份验证组件可能会选择不将请求传递给下一个组件。使用此系统,您可以按照您选择的任何方式真正处理请求,并且可以像您需要的那样轻量级或功能丰富。

This example现在有点过时了(例如IBuilder has been renamedIApplicationBuilder),但它仍然很好地概述了如何构建和注册这些组件。