asp.net core中间件与过滤器的区别

中间件和过滤器的作用很相似,但是针对的点不一样。

过滤器更贴合业务,它关注于应用程序本身,比如你看ActionFilter 和 ResultFilter,它都直接和你的Action,ActionResult交互了,是不是离你很近的感觉,那我有一些比如对我的输出结果进行格式化啦,对我的请求的ViewModel进行数据验证,就用Filter。它是MVC的一部分,它可以拦截到你Action上下文的一些信息,而中间件是没有这个能力的。.

什么情况我们需要中间件

那么,何时使用中间件呢?我的理解是在我们的应用程序当中和业务关系不大的一些需要在管道中做的事情可以使用,比如身份验证,Session存储,日志记录,移除处理等。其实我们的 asp.net core项目中本身已经包含了很多个中间件。mvc本身也是一个中间件。

中间件执行更早,管道当中的,整个项目流程相关(mvc,cookie,session,授权)

过滤器更贴近具体的业务:(过滤器是直接跟控制器打交道)

他们的作用域不同

asp.net core中间件与过滤器的区别

过滤器只是mvc中间件里边的一个小模块,它是MVC的一部分,它可以拦截到你Action上下文的一些信息。