你确定你需要DDD吗?用例看起来很简单,也许您只是忽略了所有其他复杂性,但仅从您询问的信息来看,一个简单的 CRUD 应用程序就可以了。以数据为中心的应用程序(如报告)不需要 DDD。当您必须以严格的方式修改数据以保持一致性时,您需要 DDD。
如果您确定确实需要 DDD,那么您需要了解模型的重点是防止域的不变量。您说 CRM 客户必须始终拥有同等的会计客户。今天的企业是如何处理这个问题的?会计如何了解 CRM 客户?会计如何知道他们在谈论与 CRM 相同的客户?然而,他们目前正在这样做,是你应该尝试建模的。
例如,如果他们在现实生活中这样做,只是让对方知道。您可以让您的 CRM 上下文发布一个新的客户事件,并且您的会计上下文可以通过为其创建一个会计客户来对其做出反应。
另一方面,如果他们都从其他事物中了解它,那么也许他们都对其他事物的事件做出反应。
如果您不想使用事件,则可以直接调用,从 CRM 上下文到会计上下文。虽然知道随着应用程序的增长,这会变得更加受限,但如果你再次拥有一个简单的域,那没问题。
此外,查询数据与修改数据不同。查询不应使用域模型实体和值对象。可以,但不应受其约束。那是因为查询是只读操作。仅当您要更改数据时,才需要将数据放入域模型中。