2011-05-01 59 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