《.NET 相依性注入》第 3 章可公開的情報



前三章屬於〈基礎篇〉,第 4 章開始進入〈實戰篇〉。

第 4 章預告:DI 與 ASP.NET MVC 分層架構

Orz....

4 則留言:

  1. 老師您好,請問是否會介紹DI 與ASP.NET Webform 的分層架構建議?如果系統的建置規劃上是採用多個assembly(dll),若要加入DI,是否有需特別注意的部份?謝謝指導。

    回覆刪除
  2. Hi Ziegfeld, 目前還沒有特別規劃 web forms 的部分耶。Web forms 應用程式也是可以區分商業邏輯層和資料存取層,在概念上是相似的,實作上可能會碰到一些麻煩。你目前已經有為 web forms 應用程式分層嗎?或者有碰到什麼問題?如果可以具體描述一下,也許可以互相討論、研究看看。

    回覆刪除
  3. 老師您好,謝謝回覆。我目前是有在WebForms應用程式區分出商業邏輯層和資料存取層的觀念。實作上也分成不同的.net Class Library專案。DI 解決方案我是先試著使用Unity。

    我的設計方式是WebForms應用程式叫用介面,由Unity去找到商業邏輯層的DLL。
    如要做資料庫存取時,由商業邏輯層DLL叫用介面,由Unity去找到資料存取層的DLL。實際的資料存取技術是用ADO.NET。
    所有的 Unity 容器的型別對應,都是在組態檔來設定。

    之前我希望我的Class Library專案未來可以獨立被使用,
    所以我有參考您之前的文章【讓 DLL 組件讀取自己的組態檔】試圖去分開DLL的組態設定。
    http://huan-lin.blogspot.com/2012/04/assembly-config.html

    後來我在【商業邏輯層DLL叫用介面,由Unity去找到資料存取層的DLL】這段有遇到困難。
    我找不到如何在Class Library專案中,有效處理以下語句的方式。
    _section = ConfigurationManager.GetSection("unity");
    _container.LoadConfiguration(_section, "Container");

    後來只有在單元測試專案中,定義App.Config,並在單元測試專案中去處理上述語句,才得以通過。

    不知道是不是我的思維有錯。我是希望能夠設計獨立的DLL,它可以去獨立運作載入Unity以叫用其他DLL,這樣子Host 就不用去知道它是用什麼方式去存取其他DLL的;也就是Host專案(不限WebForms/MVC/Windows Form)不一定要引用Unity的類別參考。
    這部份也想聽聽老師的想法。謝謝。





    回覆刪除
  4. 嗯...我不確定我是否真正了解你碰到的困難。似乎,Unity 載入特定組態區段,這部分目前仍沒解決?
    另一個部分,有關獨立 DLL 模組的設計,要讓 Host 專案不需要引用 Unity 的類別參考。我想問的是,你有試過寫一個單獨的 Class Library 專門用來處理物件組合的工作嗎?例如叫做 BootStrapper.dll,這個模組只做型別註冊和物件組合等工作。然後,在應用程式的進入點呼叫此模組來組合物件。這個部分可能得用實際的範例程式來討論可能比較具體些。

    回覆刪除

技術提供:Blogger.
回頂端⬆️