我正在比较从域模型使用服务(在Windsor IoC容器中的进程本地组件的意义上)的可能性.
我有3种方法来实现这个目标:
发布域事件并使用服务层代码处理它
通过模型对象上的方法注入服务
在模型对象中注入服务
(4.使用服务定位器)
第一个导致一个非常富有表现力和重复性的模式,为过程简单的任务创建一个过程风格的域事件和处理程序.但它具有最佳的模型与其所使用的环境的解耦(模型是自定义的).
第二个使方法参数更长并且看起来破坏了封装(如果模型对象的动作需要其他服务,则所有调用者都必须更改).
第三个将注入当前事务不需要的依赖项.此外,还需要"扩展"NHibernate.由于其他推荐阅读,我会避免这种方法.
由于我想在我们的文档中写这个,我需要告诉读者何时使用哪种方法.我正在思考"使用方法注入,如果你将域事件处理程序放入模型程序集"这一行,但它并没有真正达到目的.
对此规则的建议?
nhibernate domain-driven-design dependency-injection castle-windsor ioc-container
nhibernate ×1