.net core---------------------中间件介绍
什么是中间件?
中间件是组装到应用程序中用来处理和响应的组件,每个组件可以选择是否将请求传递给管道的下一个组件。可以在调用管道中的下一个组件之前和之后执行工作。
编写一个中间件
1:创建一个类,通过构造函数依赖注入请求委托(requestDelegate),然后编写Invoke方法,参数是一个http上下文,方法体编写你的逻辑,最后通过委托将http上下文传递给下一个中间件。
2:通过扩展方法使用IApptionBuilder公开你的中间件,方便在启动类直接使用你的中间件。
中间件总结
一般捕获异常放到请求管道前端,以便于捕捉后面所有中间件所发生的的异常。
中间件组件添加到在Configure方法中的顺序定义了它们在请求上被调用的顺序,以及响应的相反顺序。此顺序对安全性,性能,功能至关重要。
中间件是在应用程序启动时构建的,而不是每个请求,所以在每个请求期间,中间件构造函数使用的有限生命期服务不会与其他依赖注入类型共享。如果您必须在中间件和其他类型之间共享一个有限的服务,请将这些服务添加到该Invoke方法的签名中。
该Invoke方法可以接受由依赖注入填充的其他参数
中间件 Use(使用),Run(运行),Map(映射),Use方法可以使管道短路(不调用next请求委托),Run是一个约定,一些中间件组件可能暴露Run[middleware]在末端管道运行的方法。Map*扩展名被用作分支管道的惯例,Map根据给定的请求路径的匹配来分支请求管道,
如果请求路径以给定的路径开始,则分支被执行。MapWhen根据给定的结果(true/false)分支请求管道。Map支持嵌套!。Map也可以一次匹配多个分段。
Asp.Net Core附带以下中间件:认证,CORS,响应缓存,响应压缩,路由,会话,静态文件,URL重写中间件。
中间件组件可以通过构造函数参数从依赖注入来解决它们的依赖性