前言

自從幾年前拋棄wcf,使用web api 來(lái)做服務(wù)器端開發(fā)之后,就不再迷惑了。但是因?yàn)楸緛?lái)從事傳統(tǒng)行業(yè)管理軟件開發(fā),一般都以分布式應(yīng)用開發(fā)為主。純BS還是比較少,于是比較喜歡用windows service來(lái)宿主web api。發(fā)現(xiàn)這種場(chǎng)景網(wǎng)上文章還是比較少。這次就結(jié)合最近的技術(shù)嘗試(DI、IOC),整體介紹一下這方面的實(shí)踐。

名詞解釋

依賴注入

依賴倒置原則 A.高層次的模塊不應(yīng)該依賴于低層次的模塊,他們都應(yīng)該依賴于抽象。B.抽象不應(yīng)該依賴于具體實(shí)現(xiàn),具體實(shí)現(xiàn)應(yīng)該依賴于抽象。 DI—Dependency Injection,即“依賴注入”組件之間依賴關(guān)系由容器在運(yùn)行期決定,形象的說(shuō),即由容器動(dòng)態(tài)的將某個(gè)依賴關(guān)系注入到組件之中依賴注入的目的并非為軟件系統(tǒng)帶來(lái)更多功能,而是為了提升組件重用的頻率,并為系統(tǒng)搭建一個(gè)靈活、可擴(kuò)展的平臺(tái)。通過(guò)依賴注入機(jī)制,我們只需要通過(guò)簡(jiǎn)單的配置,而無(wú)需任何代碼就可指定目標(biāo)需要的資源,完成自身的業(yè)務(wù)邏輯,而不需要關(guān)心具體的資源來(lái)自何處,由誰(shuí)實(shí)現(xiàn)。

  理解DI的關(guān)鍵是:“誰(shuí)依賴誰(shuí),為什么需要依賴,誰(shuí)注入誰(shuí),注入了什么”,那我們來(lái)深入分析一下:

  ●誰(shuí)依賴于誰(shuí):當(dāng)然是應(yīng)用程序依賴于IoC容器;

  ●為什么需要依賴:應(yīng)用程序需要IoC容器來(lái)提供對(duì)象需要的外部資源

  ●誰(shuí)注入誰(shuí):很明顯是IoC容器注入應(yīng)用程序某個(gè)對(duì)象,應(yīng)用程序依賴的對(duì)象

  ●注入了什么:就是注入某個(gè)對(duì)象所需要的外部資源(包括對(duì)象、資源、常量數(shù)據(jù))

 控制反轉(zhuǎn):控制反轉(zhuǎn)即IoC (Inversion of Control),它把傳統(tǒng)上由程序代碼直接操控的對(duì)象的調(diào)用權(quán)交給容器,通過(guò)容器來(lái)實(shí)現(xiàn)對(duì)象組件的裝配和管理。所謂的“控制反轉(zhuǎn)”概念就是對(duì)組件對(duì)象控制權(quán)的轉(zhuǎn)移,從程序代碼本身轉(zhuǎn)移到了外部容器。 我綁架了一個(gè)人質(zhì),對(duì)圍觀的警察說(shuō):我要一輛紅色法拉利,才能釋放人質(zhì)。但其實(shí)我只是希望要一輛車而已。要法拉利很容易被拒絕,還可能引起很嚴(yán)重的后果。如果我說(shuō)要一輛車,那么警察估計(jì)更容易給我一輛普通車... 在軟件開發(fā)里面的就是盡量使用接口對(duì)象,而不使用具體明確的對(duì)象(依賴外部注入的接口對(duì)象),以此達(dá)到解除耦合的目的

網(wǎng)友評(píng)論