老師您好,請問是否會介紹DI 與ASP.NET Webform 的分層架構建議?如果系統的建置規劃上是採用多個assembly(dll),若要加入DI,是否有需特別注意的部份?謝謝指導。
Hi Ziegfeld, 目前還沒有特別規劃 web forms 的部分耶。Web forms 應用程式也是可以區分商業邏輯層和資料存取層,在概念上是相似的,實作上可能會碰到一些麻煩。你目前已經有為 web forms 應用程式分層嗎?或者有碰到什麼問題?如果可以具體描述一下,也許可以互相討論、研究看看。
老師您好,謝謝回覆。我目前是有在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的類別參考。這部份也想聽聽老師的想法。謝謝。
嗯...我不確定我是否真正了解你碰到的困難。似乎,Unity 載入特定組態區段,這部分目前仍沒解決?另一個部分,有關獨立 DLL 模組的設計,要讓 Host 專案不需要引用 Unity 的類別參考。我想問的是,你有試過寫一個單獨的 Class Library 專門用來處理物件組合的工作嗎?例如叫做 BootStrapper.dll,這個模組只做型別註冊和物件組合等工作。然後,在應用程式的進入點呼叫此模組來組合物件。這個部分可能得用實際的範例程式來討論可能比較具體些。
Huan-Lin 學習筆記
老師您好,請問是否會介紹DI 與ASP.NET Webform 的分層架構建議?如果系統的建置規劃上是採用多個assembly(dll),若要加入DI,是否有需特別注意的部份?謝謝指導。
回覆刪除Hi Ziegfeld, 目前還沒有特別規劃 web forms 的部分耶。Web forms 應用程式也是可以區分商業邏輯層和資料存取層,在概念上是相似的,實作上可能會碰到一些麻煩。你目前已經有為 web forms 應用程式分層嗎?或者有碰到什麼問題?如果可以具體描述一下,也許可以互相討論、研究看看。
回覆刪除老師您好,謝謝回覆。我目前是有在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的類別參考。
這部份也想聽聽老師的想法。謝謝。
嗯...我不確定我是否真正了解你碰到的困難。似乎,Unity 載入特定組態區段,這部分目前仍沒解決?
回覆刪除另一個部分,有關獨立 DLL 模組的設計,要讓 Host 專案不需要引用 Unity 的類別參考。我想問的是,你有試過寫一個單獨的 Class Library 專門用來處理物件組合的工作嗎?例如叫做 BootStrapper.dll,這個模組只做型別註冊和物件組合等工作。然後,在應用程式的進入點呼叫此模組來組合物件。這個部分可能得用實際的範例程式來討論可能比較具體些。