AspNetCore 基于AOP实现Polly的使用
前言??
說起AOP,其實我們在做MVC/API 的時候應該沒少接觸,比如說各種的Fitter 就是典型的AOP了。
本來在使用Polly的時候我最初的打算是使用過濾器來實現的,后來發現實現起來相當的困難,利用NetCore的中間以及過濾器去實現一個AOP的獨立應用服務簡直了,我有點無奈,相當的難寫。
后來又使用了,Autofac 做攔截器來實現也是有點小無力。估計還是基礎太薄弱。
目前我了解到的實現Polly比較方便的第三方Aop框架的有
(1)、AspectCore:是一款 AspNetCore輕量級的Aop解決方案。
(2)、Dora.Interception 老A寫的一個Aop解決方案,這個用到解決方案中就需要等到老A升級下一版了。?
??AspNetCore中的過濾器:
在使用Policy 的時候主要點是策略的制定,在保證代碼整潔,并且不破壞當前代碼邏輯的情況下,使用Aop是最合適的解決方案了。
當我們使用過濾器的時候我們會發現,Pollicy 制定了一個錯誤規則,并且在錯誤過濾器中使用、抓取不到任何的錯誤信息,因為錯誤信息被錯誤過濾器抓取了,這個時候不會觸發Pollicy?
然后嘗試著?用過濾實現一個?當程序發生錯誤的時候,執行另一個方法的功能,類似Policy的重試策略或降級。
下面代碼:
編寫:一個過濾器類:?
在控制器中使用:
當方法執行出錯的時候執行另一個方法:
如下:注意參數一致:
執行結果:
?
返回結果:?
?
這個時候我們能看到過濾器先抓取了錯誤信息,Policy 就抓不到了,但同樣實現了降級的功能。
如果我們不使用Aop的話 直接在控制器中寫
比如:這樣寫一個兩個還行多了的話,代碼就相當的亂了。
以上代碼雖然沒有實現policy ,但是也演示出了大致使用Aop實現 Policy的過程原理。
使用AspectCore 實現Policy
這里貼出一份楊中科老師 在普及AspNetCore微服務課程中的代碼:支持原創,
完整的代碼這里貼出過:
http://www.cnblogs.com/qhbm/p/9228238.html
?
使用Dora.Interception?實現Policy
我在Demo中進行了簡單的實現:這里就不貼出了,因為框架還不是很完善,我問了作者老A,要等到下一版出來后用在項目中才比較穩妥。大家可以關注一下老A博客。
截圖說明一下兩個框架的區別,到時候可根據框架需要酌情使用:
原文地址:https://www.cnblogs.com/szlblog/p/9425164.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的AspNetCore 基于AOP实现Polly的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目管理】git和码云的使用
- 下一篇: 稳定工作和创业之间的抉择