在當前軟件開發OO設計中,面對軟件需求的各種潛在變化,我們可能會采用領域驅動開發,把我們的各個業務邏輯分層次隔離解除耦合,這就出現了N層架構(這面值得是邏輯上的分層,當然我們的邏輯分層層次需要比物理架構層次多),這樣將會使得我們的軟件能夠適應更多的需求變化。關於領域驅動開發的實例網上都很多,不得不推薦的是微軟開源實例項目的NLayerApp:http://microsoftnlayerapp.codeplex.com/。
然而在於我們的邏輯分層的每一層次之間的耦合度解耦也是一個常見的問題.這樣在層次的變化中我們需要實現不變更服務層次,這是我們的設計必須依賴於不變接口(抽象)。對於分層的接口對象創建我們當前流程的解決方案是IOC框架,負責不變對象的創建組合,當下流行的IOC框架有:Autofac,Castle Windsor,Unity,Spring.NET,StructureMap,Ninject,當然這么多IOC框架供我們選擇。我本人只了解 Castle Windsor,Unity,更喜歡Unity這套微軟自身的輕量級ioc框架。關於IOC框架的測試園友Leepy有測試各大主流.Net的IOC框架性能測試比較。
另外我還想說的是我們的業務處理中有很多共性,並非業務本身的,比如權限,日志,緩存等功能模塊,如果我們每次都重復將是一個巨大的工作量和難以維護的成本。應運而生的AOP框架,就是一種從業務縱向切入,對目標實現權限,日志等。對於AOP的實現主流框架主要有透明代理和靜態植入兩大類。Castle和EL中的PIAB就是一種透明代理的實現方式,PostSharp則是編譯時靜態注入框架。其他框架還有SetPoint,NAop,NKalore。
今天整理一下本博客匯總關於IOC,AOP的隨筆,忘大家不辭吝嗇多多指教,共同進步。
一:IOC目錄:
- IOC應用篇:
二:AOP目錄:
- AOP靜態植入原理:
- PostSharp AOP:
- AOP之PostSharp初見-OnExceptionAspect
- AOP之PostSharp2-OnMethodBoundaryAspect
- AOP之PostSharp3-MethodInterceptionAspect
- AOP之PostSharp4-實現類INotifyPropertyChanged植入
- AOP之PostSharp5-LocationInterceptionAspect
- AOP之PostSharp6-EventInterceptionAspect(事件異步調用)
- AOP之PostSharp7-解決IOC 不能直接new問題,簡化IOC開發和IOC對象LazyLoad
- PostSharp - Thread Dispatching(GUI多線程)
本系列中的隨筆還有繼續,我會不斷更新。忘大家不辭吝嗇多多指教,共同進步。