【发布时间】:2014-03-11 13:30:57
【问题描述】:
我想问:在不同的程序集上拆分域好不好? 例如,我有两个实体用户和设备,这些实体彼此不相关。 拥有两个域组件(用于用户和设备)并将它们存储在不同的数据库中是否很好? 如果我的应用程序连接到不同的数据库,不同数据库中的实体是否应该在不同的域程序集中? 请解释你的答案!
【问题讨论】:
标签: c# .net architecture domain-driven-design assemblies
我想问:在不同的程序集上拆分域好不好? 例如,我有两个实体用户和设备,这些实体彼此不相关。 拥有两个域组件(用于用户和设备)并将它们存储在不同的数据库中是否很好? 如果我的应用程序连接到不同的数据库,不同数据库中的实体是否应该在不同的域程序集中? 请解释你的答案!
【问题讨论】:
标签: c# .net architecture domain-driven-design assemblies
首先你的领域模型应该不知道持久层。您连接到不同或多个数据库的应用程序不应影响您的域模型或其规则,因为它违背了使用 DDD 的目的。
您根据部署模式拆分程序集。您可以将域模型和持久性基础设施放在同一个程序集中,并且仍然保持关注点分离。逻辑解耦是唯一重要的事情。
【讨论】:
拆分方法确实有助于依赖管理,但不是必需的。
依赖管理的粒度决定了成本。如果我们能在更粗略的水平上进行管理,它会低得多。该方法实际上指导团队不将用户与设备相关联。 但付出的代价是否值得?这取决于您的项目和团队。
拆分数据库也是如此。团队不太可能将 T_USER 与 T_EQUIPMENT 联系起来。他们必须使用易于查找和查看的 dblink 或 grant。
顺便说一下,这种方法是通用的,而不是特定于 ddd 的。
【讨论】: