关于领域模型与分层问题

10-04-06 spawnyy

大家好,现在我有点不太明白领域模型与服务的问题,领域模型是不是应该有行为,也就是说应该有的职责与业务逻辑,那么服务是做什么的呢,做事务和调用仓储么。还有业务逻辑与领域逻辑是一回事情么。现在觉得服务层有点多余,实在不清楚他负责什么,可领域模型有不能注入仓储类似其他东西,都要用Domain Event进行实现么。

                   

banq
2010-04-06 11:32

关于服务定义,参考这个帖子:http://www.jdon.com/jivejdon/thread/38325#23127646

服务是业务场景发生的地方,就象你把加油机和服务人员放在门口,就在门口提供加油服务,如果你放在房间内,就在房间内提供加油服务,但是,加油这个动作或职责不是由服务本身完成,服务本身是一个时间地点的结合点,是一个时间空间的交汇点,是业务场景发生的地方,但不是业务场景本身。

业务逻辑和领域逻辑从概念了上是差不多的,逻辑一般是指规则rule等静态的东西,逻辑要发生作用,必须被事件激活,事件被激活就讲究时间和空间,这点和服务又吻合。

服务是事件的入口,外部事件进入服务后,被服务传递给领域模型,由领域模型驱动相关服务或仓储或相关算法完成一定职责行为,这是一个方式,还可以专门设立一个场景对象,服务-->场景,在场景中注射服务或仓储或算法,完成相关场景的职责行为,这应该是两种目前不同实现方式。

取个正式名称,前面Domain Events应该成为EDA,事件驱动架构;后者可以认为是DCI架构,相关分支讨论见本帖的标签。

[该贴被banq于2010-04-06 11:33修改过]