前言

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

名詞解釋

依賴注入

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

  理解DI的關鍵是:“誰依賴誰,為什么需要依賴,誰注入誰,注入了什么”,那我們來深入分析一下:

  ●誰依賴于誰:當然是應用程序依賴于IoC容器

  ●為什么需要依賴:應用程序需要IoC容器來提供對象需要的外部資源;

  ●誰注入誰:很明顯是IoC容器注入應用程序某個對象,應用程序依賴的對象;

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

 控制反轉:控制反轉即IoC (Inversion of Control),它把傳統上由程序代碼直接操控的對象的調用權交給容器,通過容器來實現對象組件的裝配和管理。所謂的“控制反轉”概念就是對組件對象控制權的轉移,從程序代碼本身轉移到了外部容器。 我綁架了一個人質,對圍觀的警察說:我要一輛紅色法拉利,才能釋放人質。但其實我只是希望要一輛車而已。要法拉利很容易被拒絕,還可能引起很嚴重的后果。如果我說要一輛車,那么警察估計更容易給我一輛普通車... 在軟件開發(fā)里面的就是盡量使用接口對象,而不使用具體明確的對象(依賴外部注入的接口對象),以此達到解除耦合的目的。哎我自己也理解得不深刻,其實我要說的是:owin+web api+autofac.上面的解釋是我抄的,理解不了就算了吧。后面這些總該知道什么東西吧。 

網友評論