【发布时间】:2012-12-21 04:02:19
【问题描述】:
我正在比较域模型中使用服务的可能性(在流程本地组件的意义上,如 Windsor IoC 容器中)。
我有 3 种方法可以做到这一点:
发布域事件并让服务层代码处理它
通过模型对象上的方法注入服务
在模型对象中注入服务
(4. 使用服务定位器)
第一个导致非常有表现力和重复性的模式,以程序风格创建领域事件和处理程序,以完成原本简单的任务。但它最好将模型与其使用的环境解耦(模型是自定义的)。
第二个使方法参数更长,看起来像它破坏了封装(如果模型对象的操作需要其他服务,则所有调用者都必须更改)。
第三个将注入当前事务不需要的依赖项。为此,还需要“扩展”NHibernate。由于阅读了其他建议,我会避免使用这种方法。
因为我想在我们的文档中写这个,我需要告诉读者什么时候使用哪种方法。我正在考虑“如果要将域事件处理程序放入模型程序集中,请使用方法注入”这一行,但它并没有真正切中要害。
对此规则的建议?
【问题讨论】:
标签: nhibernate dependency-injection domain-driven-design castle-windsor ioc-container