关于DDD中的service。

08-07-08 xmuzyu
         

DDD一书中说:服务其实有两种服务,一是领域层服务;二是应用层服务.他们的不同点是:应用层上的服务没有任何业务含义,领域层的服务包括了基本的业务逻辑。
一下引用banq老师在(对JiveJdon3中services设计的疑问)http://www.jdon.com/article/33948.html
的一段话:
领域层服务容易和领域模型行为,很多人容易把领域模型行为也就是业务核心放入领域层服务中,我前面讨论的就是这种情况,虽然领域层服务控制了领域模型,但是不代表业务核心就要放入领域层服务,而应该放入领域模型中,这两者区别也有些鱼和水的区别,服务是SOA等架构,而领域模型则应该和架构无关,只和业务有关,脱离当前架构SOA也可以生存,比如移植到EDA架构也应该可以,如果你到EDA下,由于没有Service,而你的业务核心在Service,那你不是要重写软件了?

领域层服务也是领域模型的一种,我觉得应该可以放业务逻辑,而应用层服务里不能放业务逻辑。如果领域层服务里没有业务逻辑,那么业务逻辑放哪里呢?DDD中领域模型只有三种元素,实体,值对象以及服务(这里的服务应该是领域层服务吧呵呵),那么业务逻辑应该放哪里?请各位DDD高手指点。

         

banq
2008-07-09 08:21

是领域层,由实体和值对象以及规则过滤器等组成

bmrxntfj
2008-07-10 12:35

lz的疑问,很多都是没有理解“规则,过滤”的概念。
这些不能把他们直接写到Service中,比如:if什么什么,然后entity.什么。这里就应该把隐式概念转化为显示概念。定义出那个规则。虽然领域层服务控制了领域模型,但是不代表业务核心就要放入领域层服务,而应该放入领域模型中

xmuzyu
2008-07-10 14:58

哦,多谢指导。是我理解有误。多谢。