業務建模:BoundedContext(有界上下文)

clonalman發表於2012-10-11

有界上下文BoundedContext在DDD是一個擴充的概念,在Evans經典DDD的書裡應該是沒有這個概念的,Jdon論壇上面的很少涉及BoundedContext文章。

就BoundedContext的設計上,提出幾個自己的在這方面看法,拋磚引玉。

1、BoundedContext不同於Role(DCI)

它們看起來有點相似,但BoundedContext的描述語意會更加廣泛一點。Role(DCI)根據角色直接捕捉角色與系統互動行為,更接近於業務需求,BoundedContext更強調則業務分析避免歧義.

比如,Security模組的User,Hr模組的Employee,Project模組的Member等,當涉及“系統使用者”的時候,系統管理員會認為說的是系統使用者,行政總監會認為說的是員工,專案經理會說的是專案成員,這時候Role與BoundedContext就很類似了,除了類似Role這樣的概念,BoundedContext還可以其他業務概念的歧義問題,如“Account”他可能是財務的概念也可能是其他業務的概念。

2、BoundedContext與Repository

領域內的Entity都應該置於一定的上下文語境下面,而Entity的重建在Repository內完成的,所以Repository對BoundedContext存在一定的依賴關係

3、BoundedContext與Domain Service

業務之間或業務模組之間存在一定的互動關係,而這種互動關係最終體現為BoundedContext之間的互動關係,

業務的互動可以領域服務(Domain Service)來實現。

一個系統,當從資料的角度考察的時候,表現為一系列查詢和命令,當從業務的角度考察的時候,表現為一系列業務行為,

這個視角的不同最終體現為不同的Context之間的差異,其互動通過QueryService、CommandService、UnitOfWorkService來實現。

4、BoundedContext可做為CommandHandler與EventHandler的實現。

架構CQRS有太多概念很容易模糊掉關注領域核心的視線,所以才會把很多架構裡元素放到BoundedContext中。

[該貼被clonalman於2012-10-11 23:33修改過]

相關文章