我正在开发一个存在以下要求的应用:
我正在努力解决的问题是我们正在尝试在我们的项目上使用DDD,而且没有任何解决方案真的“感觉正确”。我们对现代DDD都缺乏经验,因此找到合适的模型非常困惑。
这不是文档管理问题。提交者总是只有一份草稿副本,有时候合同中没有一方可以编辑(通过重新提交草稿副本进行编辑)。出于这些目的,这两个域概念中的字段是相同的。
是否有一些可以应用的设计模式或DDD友好解决方案?
答案 0 :(得分:2)
我不确定你在这里想要什么,但我建议你看一下EventSourcing模式。它对跟踪域对象的更改非常有用。 关注Martin Fowler:
Event Sourcing确保对应用程序状态的所有更改都是 存储为一系列事件。我们不仅可以查询这些事件 也可以使用事件日志来重建过去的状态,并作为一个 基础自动调整状态以应对追溯 变化。
Greg Young:
拥有两个模型的另一个问题是它 必须更多的工作。必须创建代码以保存当前 对象的状态,必须编写代码来生成和 发布事件。无论你怎么做这些事情呢 即使你有,也不可能比仅发布事件更容易 使存储当前状态完全无关紧要的事情 文件存储,仍然有努力将其带入 项目
-Greg Young -
当用户提交“草稿副本”时,应该引发一个事件并将其存储到EventSourcing
中。
另一个用户提出另一个“草稿副本”将被EventSourcing
对象捕获并标记为新版本。如何使它不同你应该应用DDD。文档对象是Domain
对象并具有标识符。
对于每个版本的实体,从Eventsourcing
查询和更新状态会很容易,并且会收回对象的版本。
您可以从MSDN获取有关EventSourcing
的更多参考信息。
希望得到这个帮助。