2011-11-24 273 views
1

我正在學習棱鏡並需要創建一個小型演示應用程序。我有一些設計問題。態度之間的差異可能很小,但我需要將這些實踐應用到大型項目中,因此我試圖提前思考。棱鏡模塊化實踐

  1. 假設經典DB相關情景 - 我需要得到員工的列表,並在列表項雙擊獲取用於員工額外的信息:如果該數據訪問項目是一個模塊,或者是一個項目通過存儲庫模式訪問更好的解決方案大型項目的情況如何,當數據庫不止一張表,並提供有關員工,銷售額,公司等的信息時呢?

  2. 我目前正在考慮使用DataAccess模塊作爲獨立模塊,並已在Infrastructure項目中定義了其接口以及返回類型(EmployeeInformation)。這意味着我的DataAccess模塊和我的應用程序都必須參考Infrastructure項目。這是一個好方法嗎?

  3. 我正在使用我的應用程序中的ServiceLocatorMEF)訪問上述DataAccess模塊。 ServiceLocator是否應該被應用程序的某些部分訪問,還是僅用於初始化部分?

謝謝。

+0

我創建了與基礎架構分開的數據訪問,現在將它們合併爲一個項目。當你開始深入研究時,有很多共同的部分。 – katit

+0

我也這麼認爲,但在主應用程序中,我們希望在Prism上構建一個,DataAccess將是一個相當大的項目,我認爲它會溢出「Infrastructure」項目。 – Noich

回答

1
  1. 需要一個模塊,當它包含可以獨立運行的應用程序的一部分時,它是有意義的。這可以是隻有幾個人需要或允許使用的應用程序的一部分,例如,用戶管理模塊只允許管理員訪問。但是你的數據訪問層並不是那種通常進入模塊的獨立功能。最好放置在真實模塊可以使用的通用裝配中。這裏的問題是所有的模塊都依賴於這個DAL程序集,因此在設計應用程序時需要考慮更新DAL(向下兼容)。
  2. 通常,使用廣泛的類型存在於一個通用組件中是沒有問題的。但這不是基礎設施組裝。正如這個詞所暗示的,基礎設施提供的服務可以讓這些模塊一起工作。您的常見類型應該進入像YourNamespace.Types或YourNamespace.Client.Base或...
  3. 這是一個話題在很多論點,仍然不清楚(至少從我的角度來看)。依賴注入純粹主義者說,它只能在初始化時使用。實用主義者在他們的應用程序中使用ServiceLocator。