我已经阅读了几周的事件采购和DDD。所以,我需要创造一种无处不在的语言。它究竟意味着什么?我需要创建一些定义某些域类的库,不是吗?
所以,我本来会创建一个mydomain-language-artifact.jar
工件,它应该由我的服务A
和B
使用。
Event
,Value Objects
或Aggregates
类?因此,猜测一切正常,我的域模型发生了变化,我的意思是,Customer
有一个新的alias
字段。所以这意味着我应该更改我的mydomain-language-artifact.jar
在Customer
课程中添加此更改,不应该吗?
因此,这意味着可能Events
,Value Objects
和Aggregates
也会发生变化。可能CustomerAddedEvent
将包含alias
字段。那么,Event Store中存储的以前的事件呢?我怎么能重播它们并重建我的系统?
答案 0 :(得分:2)
通过与域专家交谈,无处不在的语言是识别所需要的。此刻你正在以非常错误的方式学习DDD,因为你把它当成食谱。
DDD的目的是通过识别用例,概念和关系,相关模型等来理解域功能。这只是信息,我们使用DDD的战术模式进一步组织。
这不是关于编写域类,这表明你的心态仍然远离DDD的意思。我花了5年时间才得到DDD,不要指望它在2-3周内通过阅读1-2本书来“学习”它。不写代码需要练习和很多纪律。代码是实现,它从DDD结束的地方开始。
与事件采购相同。虽然更容易理解的是与DDD耦合的方式,因为这些域事件需要正确识别。
你要求许多无法真正回答的通用问题,因为它取决于...... DDD的特殊之处在于我们会根据具体情况专注于细节。
我wrote关于DDD,特别是关于需要理解的心态。希望它会对你有所帮助。