做者:立地(歐文) 郵箱:jarvin_g@126.com
AOP爲Aspect Oriented Programming的縮寫。 意爲:面向切面編程。將日誌記錄,性能統計,安全控制,事務處理,異常處理等代碼從業務邏輯代碼中劃分出來,經過對這些行爲的分離,將它們獨立到非指導業務邏輯的方法中,進而改變這些行爲的時候不影響業務邏輯的代碼。git
在平常的編程任務中,不少的代碼都是進行一些通用的功能(日誌、檢測、一層處理等等),而後代碼都是機械般的複製粘貼,實際上的業務邏輯代碼只佔很少的份額。那麼,aop能更好的組織通用的代碼、而後以標記的方式讓某個方法切入,使得業務邏輯和通用代碼分離,使其互不影響。github
多切面、同步編程
[TryCatchAttrubute] [LogAopAttrubute] [TimeAop] public virtual void DoWord() { throw new Exception("錯誤測試"); Debug.WriteLine("123"); }
結果:安全
開始捕捉異常([TryCatchAttrubute]) 開始執行([LogAopAttrubute]) 2015/11/5 0:47:19([TimeAop]) 錯誤測試(異常捕獲處理) 執行中([LogAopAttrubute]) 執行結束,Void DoWord()方法([LogAopAttrubute]) 2015/11/4 23:47:19 [TimeAop])
多切面、異步框架
[TryCatchAttrubute] [LogAopAttrubute] [TimeAop] public virtual async Task DoWord() { await GetValueAsync(1234.5123, 1.01); Debug.WriteLine("123"); throw new Exception("錯誤測試"); Debug.WriteLine("123"); }
結果:異步
開始捕捉異常([TryCatchAttrubute]) 開始執行([LogAopAttrubute]) 2015/11/5 1:05:23([TimeAop]) 執行中([LogAopAttrubute]) 123 處理錯誤,錯誤信息爲:錯誤測試([TryCatchAttrubute]) 執行結束,System.Threading.Tasks.Task DoWord()方法([LogAopAttrubute]) 2015/11/5 0:05:23([TimeAop])