ASP.NET Core 中间件分类
?
ASP.NET Core 中間件的配置方法可以分為以上三種,對應的Helper方法分別是:Run(), Use(), Map()。
Run(),使用Run調用中間件的時候,會直接返回一個響應,所以后續的中間件將不會被執行了。
Use(),它會對請求做一些工作或處理,例如添加一些請求的上下文數據,有時候甚至什么也不做,直接把請求交給下一個中間件。
Map(),它會把請求重新路由到其它的中間件路徑上去。
實際中呢,Use()這個helper方法用的最多。
?
Run():
?
?這是一個使用Run方法調用的中間件,Run方法會終止整個中間件管道,它應該返回某種類型的響應。
?
Use():
?
?Use看起來和Run差不多,但是多了一個next參數。next可以用來調用請求管道中的下一個中間件。而當前的中間件也可以自己返回響應,這就忽略掉了next調用。
在next調用之前,我們可以寫一些請求進來的邏輯,而在next調用之后,就相當于返回響應了,這時候也可以寫一些邏輯。
在本例中,我們下面還使用了Run方法注冊了另一個中間件。因為中間件會按照它們注冊的順序進行調用,所以在第一個Use方法里執行next.Invoke()的時候,就會執行下面Run所調用的中間件。
?
Map():
?
?Map方法可以把請求路由到其它的中間件上面。
在這里,如果請求的路徑以/jump結尾,那么它所對應的handler方法,也就是HereIAm方法的中間件就會被調用,并返回一個響應。
而如果請求的路徑不是以/jump結尾,那么HereIAm方法里面的中間件就不會被調用。
?
中間件Class
上面的例子,我都是使用的inline寫法的中間件。
而實際上,中間件通常是自成一個類。中間件的類需要類似這樣:
?
?自定義的中間件類需要由這幾部分組成:
接受一個RequestDelegate類型的參數next的構造函數。
按約定,還需要定義一個叫做Invoke的方法。該方法里會包含主要的業務邏輯,并且它會被請求管道所執行。Invoke方法可以忽略里面的_next調用,并返回一個響應;也可以調用_next.Invoke()把請求發送到管道的下一站。
?
總結
以上是生活随笔為你收集整理的ASP.NET Core 中间件分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Abp vNext发布v2.3!
- 下一篇: .NET Core开发实战(第28课:工