怎么确定使用module还是boundedContext

13-07-04 axlfu
    

设计阶段,大家是怎么确定该使用module还是BoundedContext?

领域模型,module,boundedContext关系是什么

[该贴被axlfu于2013-07-04 17:14修改过]

    

banq
2013-07-04 20:57

首先确定boundedContext,也就是上下文分界,每个boundedContext可以认为是一个module,每个boundedContext有一个聚合根,聚合根是实体模型,而实体是一种领域模型。

axlfu
2013-07-04 21:47

呃。。。一个boundedContext不一定只有一个聚合根把,限定上下文只是表明领域模型在这个上下文中保证一致性,但可以有多个聚合根的。

比如ddd那本书里经常举例的货物运输预订系统。在最初分析的时候,

我是应该把Shipping和Billing

1.作为一个BoundedContext中领域模型的两个module呢?还是

2.作为两个BoundedContext?

尤其时系统比较大的时候,怎么下刀对于新手还是有点迷惑

例子可能不太合适,因为这两个交集不太明显。

对于有交集的,咱先不说可以用SharedKernel,

就是先确定是按module划分还是bc划分呢?

banq
2013-07-06 07:45

2013-07-04 21:47 "@axlfu

"的内容

就是先确定是按module划分还是bc划分呢 ...

我之前说了先BC,BC等同于module,见这个讨论:

http://www.jdon.com/44604/10#23140517

如下图,每个BC是一个module,

或者可参考:

http://www.slideshare.net/jeppec/what-soa-eda-and-cqrs-version

axlfu
2013-07-06 10:05

banq,我的意思是,你看在ddd的那本书里的货物运输预订系统例子。

埃文斯其实是把billing和shipping都放在统一领域模型,它们是属于一个boundedContext的。

而和另一个线路计算模型(就是用图来计算的那个系统)是分属两个不同的BC,中间有个转换器

所以我们的分歧点在于:

我认为BC是和领域模型等同的,领域模型里可以有多个业务(shipping,billing),或者有多个module(当然也可以只有一个)

而您是认为一个BC对应一个module,(一个领域模型有多个bc?重点分歧可能在这儿),因为给的图看,相当于一个业务模块是一个BC/module