|
在當(dāng)前軟件開發(fā)OO設(shè)計(jì)中,面對(duì)軟件需求的各種潛在變化,我們可能會(huì)采用領(lǐng)域驅(qū)動(dòng)開發(fā),把我們的各個(gè)業(yè)務(wù)邏輯分層次隔離解除耦合,這就出現(xiàn)了N層架構(gòu)(這面值得是邏輯上的分層,當(dāng)然我們的邏輯分層層次需要比物理架構(gòu)層次多),這樣將會(huì)使得我們的軟件能夠適應(yīng)更多的需求變化。關(guān)于領(lǐng)域驅(qū)動(dòng)開發(fā)的實(shí)例網(wǎng)上都很多,不得不推薦的是微軟開源實(shí)例項(xiàng)目的NLayerApp:http://microsoftnlayerapp./。 然而在于我們的邏輯分層的每一層次之間的耦合度解耦也是一個(gè)常見的問題.這樣在層次的變化中我們需要實(shí)現(xiàn)不變更服務(wù)層次,這是我們的設(shè)計(jì)必須依賴于不變接口(抽象)。對(duì)于分層的接口對(duì)象創(chuàng)建我們當(dāng)前流程的解決方案是IOC框架,負(fù)責(zé)不變對(duì)象的創(chuàng)建組合,當(dāng)下流行的IOC框架有:Autofac,Castle Windsor,Unity,Spring.NET,StructureMap,Ninject,當(dāng)然這么多IOC框架供我們選擇。我本人只了解 Castle Windsor,Unity,更喜歡Unity這套微軟自身的輕量級(jí)ioc框架。關(guān)于IOC框架的測(cè)試園友Leepy有測(cè)試各大主流.Net的IOC框架性能測(cè)試比較。 另外我還想說的是我們的業(yè)務(wù)處理中有很多共性,并非業(yè)務(wù)本身的,比如權(quán)限,日志,緩存等功能模塊,如果我們每次都重復(fù)將是一個(gè)巨大的工作量和難以維護(hù)的成本。應(yīng)運(yùn)而生的AOP框架,就是一種從業(yè)務(wù)縱向切入,對(duì)目標(biāo)實(shí)現(xiàn)權(quán)限,日志等。對(duì)于AOP的實(shí)現(xiàn)主流框架主要有透明代理和靜態(tài)植入兩大類。Castle和EL中的PIAB就是一種透明代理的實(shí)現(xiàn)方式,PostSharp則是編譯時(shí)靜態(tài)注入框架。其他框架還有SetPoint,NAop,NKalore。 今天整理一下本博客匯總關(guān)于IOC,AOP的隨筆,忘大家不辭吝嗇多多指教,共同進(jìn)步。 一:IOC目錄:
二:AOP目錄:
本系列中的隨筆還有繼續(xù),我會(huì)不斷更新。忘大家不辭吝嗇多多指教,共同進(jìn)步。 |
|
|