2011-05-01 57 views
0

目前我的團隊正在開發一個使用「過程」模型的項目。每個過程由「步驟」組成,這些步驟可以分別爲「IValidationStep」或「ITransactionStep」。在每種情況下,邏輯都不同(事務步驟可以回滾)。獨立容器vs一個容器 - Unity

這些步驟將通過Unity解決。

在我們的項目中,我們將使用可在Unity配置中替換的步驟來構建常規驗證和事務邏輯。

我們目前正在討論是否將容器(每個容器由驗證過程和事務過程組成)分隔開來,還是將其全部保存在一個容器中。

我想在分離容器和一個容器上得到你的誠實意見。請記住,我們的項目應該通過單元測試進行完全測試。

回答

2

如果你的代碼必須是完全可測試您的流程會可能通過依賴注入獲得所有依賴關係(步驟)。在這種情況下,Unity將完全獨立,不會對UnityContainer產生任何影響。唯一將參考UnityContainer的代碼將是邏輯實例化並執行您的過程。這導致我帶有命名類型註冊的單個UnityContainer

+0

這是我們的考慮因素之一,因爲分離容器意味着BL代碼必須得到特定的統一容器通過配置部分。因此代碼將引用UnityContainer。 – JarJarrr 2011-05-01 10:15:46

+0

它會使你的代碼依賴於具體的統一配置,這是不好的。你所有的單元測試將不得不使用單位來正確配置測試過程。 – 2011-05-01 10:18:11

+0

確實如我所見,看起來在分離UnityContainers時,我們需要在我們的測試環境中持有Unity.Config。 那麼何時最好分離UnityContainers? – JarJarrr 2011-05-01 10:25:49

0

爲什麼不與一個容器啓動並在需要時重構爲多,有時你只需要啓動,看看你在哪裏結束就知道正確的方法...

+0

我相信你是正確的,但另一個問題是,我們正在編寫其他框架組件以用於此項目和其他項目。 一個示例是NotificationManager發送通知(電子郵件,短信等)。 NotificationManager使用將在UnityContainer中註冊的INotificationProvider。由於它是框架代碼,我們需要知道是通過依賴注入還是通過UnityContainer()獲取特定的UnityContainer INConificationProvider LoadConfiguration – JarJarrr 2011-05-01 10:19:04