2012-02-13 54 views
1

我正在尋找一些關於如何最好地配置這種情況的建議。我在ASP MVC應用程序中有以下組件。Castle Windsor組件生活建議

  • 控制器 - 通過MVC
  • 服務的要求瞬態 - 控制器調用這些才能到業務層
  • 校驗 - 服務使用這些驗證組件。這些都是創建這麼貴我需要他們辛格爾頓
  • 庫 - 服務和驗證程序使用這些訪問數據
  • 的Isession - NHibernate的會話配置成PerWebRequest

我期待在如何最好地配置服務和存儲庫。從表面上看,它們似乎都可以配置相同。存儲庫只依賴(傳遞給構造函數)是ISession。僅服務依賴項(傳遞給構造函數)是存儲庫。當一個服務需要一個驗證器時,它從ServiceLocator中獲取它。驗證器在構造函數中獲取存儲庫。我認爲這是因爲驗證程序是Singleton傳遞的瞬態庫是有問題的,因爲驗證程序將持有一個存放ISession的存儲庫。

在這裏的任何幫助將不勝感激。

回答

1

任何依賴UnitOfWork(ORM,自定義實現...)的存儲庫都必須是暫時的或至少是相同的生活方式。

如果您的驗證需要一個「只讀」權限通過信息庫存儲...你可以考慮有一個Singleton庫,但要對其實施非常小心

0
  • 會議PerWebRequest
  • 存儲庫取決於使用ISessionProvider(可能是單例),如果它們被注入到會話中,它們綁定到會話的生命週期,所以PerWebRequest
  • 驗證程序:創建成本高?好的,如果他們需要回購或會話在這裏同樣適用於回購本身
  • 服務:可能也可能是每個Web請求