今天我们来学习中间件定义的两种方式,在NET Core中最重要的莫过于是中间件了,毫不夸张的讲,NET Core就是通过多个中间件组成的;中间件的定义有两种方式,一种是定义强类型中间件,另一种是定义弱类型中间件,接下来我们就好好的讲解一下如何定义这两种类型的中间件。
这种类型的中间件定义是通过继承提供的固定的接口来实现的,这个固定的接口就是IMiddleware,既实现这个接口的都称作为强类型中间件
这种类型的中间件定义是通过基于约定的方式来实现的,如何你熟悉MVC,你应该知道约定大于配置这句话。
在NET Core中对于定义弱类型的中间件的约定是:
中间件类型必须有一个有效的公共构造函数,且该构造函数必须包含一个RequestDelegate类型的参数,值得注意的是该参数的位置不固定,且该构造函数的参数个数也不固定
中间件类型针对请求处理的实现必须在一个返回类型为Task类型的Invoke方法或者InvokeAsync方法中,且该方法的第一个参数类型必须为HttpContext,值得注意的是后续的参数没有任何的限制,但是由于最终这些参数都需要由DI框架提供,所以,使用的时候必须对相应的参数进行服务注册。
以上就是中间件定义的两种方式,我们可以对比一下这两种方式的异同,首先是代码的区别,我们可以很直观的看到强类型中间件通过继承接口的方式实现的方法带有两个参数,这两个参数正好是分散在弱类型构造函数和方法中的两个参数,所以由此我们可以得出任何中间件的定义都必须要提供HTTPContext和RequestDelegate这两个类型参数,只是实现提供的方式不同而已。
from: https://blog.csdn.net/weixin_30039755/article/details/112642199