Asp.Net中间件 vs HttpModules

6

从Asp.Net 5开始,我们现在有了“中间件”的概念,用于更改或与请求和响应交互。以前所有这些都是使用HttpModules实现的。

因此,我的问题如下。

什么是Asp.Net中间件,这个组件解决了什么问题,而HttpModules无法解决?

2个回答

7
HttpModules在ASP.NET 5之前的版本中作为请求过滤器。它们是可重复使用的代码单元,可以插入请求管道,并在触发HttpApplication类中定义的事件时响应。 Middleware可以被认为是经典ASP.NET中所拥有的HTTP moduleshandlers。一些中间件会在处理请求时实现各种中间任务,例如身份验证、会话状态检索和持久性、日志记录等等。其中一些将是产生响应的最终请求处理程序。

问题2:这个组件解决了哪些问题,而HttpModules无法解决?

  • HttpModule中,你必须基于请求的各个阶段执行代码,例如AuthenticateRequestAuthorizeRequestPostResolveRequestCache等。但是,现在使用中间件已经不再需要考虑这些事情。现在一切都是你的代码的线性执行。你可以定义多个中间件在你的应用程序中执行,每一个都在你的Startup.cs文件中显式注册。

  • 作为开发者,你完全控制着什么以及以什么顺序执行,而不是不知道哪些HttpModules正在执行,也不真正控制它们的执行顺序。中间件可以简单地修改请求并继续调用链中的下一个,或者只是终止管道并返回结果。

参考文献


0

都用于设置请求处理管道。

MiddleWare 组件,我们用于为 ASP.net core 应用程序设置请求处理管道。

HttpModules,我们用于为 ASP.net 应用程序设置请求处理管道。

它是管道,决定如何处理传入的 HTTP 请求和传出的 HTTP 响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接