【发布时间】:2017-07-04 17:41:47
【问题描述】:
我知道 DDD 非常适合基于任务的 UI,但我正在重构一个遗留应用程序,其中我有贫血域模型(许多设置器没有业务逻辑)。
第一步是让它到达模型并添加领域事件。虽然添加事件以创建(TaskCreated in constructor)和删除(TaskRemoved)模型是一个简单的过程,但我正在努力更新模型。
我们有一个带有 PUT /tasks/{id} 端点的 RESTful API。在底层,框架将响应的主体映射到 DTO 对象,然后一一调用 setter:
task.setText('new text');
task.setStartDate(newStartDate);
// and so on
我想在任务更新时收听一些事件并在例如更新它谷歌日历。
正如您所想象的那样,如果我在每个 setter (TextChanged, StartDateChanged) 中记录事件并监听所有事件,我最终会收到许多对 Google API 的 API 调用,这不是我想要的。
问题是:我应该如何以正确的方式使用更新操作?我应该用一个update(newData) 调用替换所有那些setters 调用并在那里只调度一个域事件吗?任务更新后如何只一个 API调用谷歌日历?
【问题讨论】:
标签: domain-driven-design cqrs domain-events anemic-domain-model dddd