tnblog
首页
视频
资源
登录

NET Core 中间件(Middleware)和过滤器(Filter)的区别

8723人阅读 2019/12/24 11:36 总访问:99543 评论:0 收藏:0 手机
分类: .NET Core

前言

平安夜快乐!

未来可期,人间值得!

储存阳光,必有远芳。

     心中有暖,又何惧人生荒凉!



一、中间件(Middleware)的作用

我们知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终到达我们写的代码中。那么中间件就是在应用程序管道中的一个组件,用来拦截请求过程进行一些其他处理和响应。中间件可以有很多个,每一个中间件都可以对管道中的请求进行拦截,它可以决定是否将请求转移给下一个中间件。


二、中间件的四种运行方式

默认情况下,中间件的执行顺序根据Startup.cs文件中,在public void Configure(IApplicationBuilder app){} 方法中注册的先后顺序执行。

1、app.Use()IApplicationBuilder接口原生提供,注册等都用它。

2、app.Run() ,是一个扩展方法,它需要一个RequestDelegate委托,里面包含了Http的上下文信息,没有next参数,因为它总是在管道最后一步执行。

3、app.Map()也是一个扩展方法,类似于MVC的路由,用途一般是一些特殊请求路径的处理。

4、app.UseMiddleware<>(),没错,就是这个了。 为什么说功能强大呢?是因为它不但提供了注册中间件的功能,还提供了依赖注入(DI)的功能,以后大部分情况就用它了。


三、中间件(Middleware)和过滤器(Filter)的区别

熟悉MVC框架的同学应该知道,MVC也提供了5大过滤器供我们用来处理请求前后需要执行的代码。

分别是

        AuthenticationFilter,

        AuthorizationFilter,

        ActionFilter,

        ExceptionFilter,

        ResultFilter

同作为两个AOP利器,过滤器更贴合业务,它关注于应用程序本身,比如你看ActionFilter 和 ResultFilter,它是直接与控制器交互的,同时比如我们要对结果进行格式化啦,且要对请求的ViewModel进行数据验证啦,这个时候就是用Filter无疑了。它是MVC的一部分,它可以拦截到你控制器上下文的一些信息,而中间件是没有这个能力的。


四、什么情况我们需要中间件

比如身份验证,Session存储,日志记录等

其实我们的 asp.net core项目中本身已经包含了很多个中间件,比如MVC本身就是一个中间件。


评价
人之因此能,是坚信能
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术