【发布时间】:2023-03-29 15:28:01
【问题描述】:
在领域驱动设计中,您如何考虑您的领域(命名空间)?
我一直在转向以下概念:
Project.Entity
Project.Entity.Abstracts
Project.Entity.Entities
Project.Entity.Extensions
Project.Entity.Immutables
Project.Entity.Interfaces
Project.Entity.Repositories
例如,我在 CMS 中有一个名为“内容”的实体。因此,我将创建一个名为 Project.Content 的项目,并将类分解为如下所示:
interface IContent
class Content : IContent
interface IContentRepository
class ContentRepository : IContentRepository
这个“内容”实体模型会有自己的命名空间。
但是,我发现它在具有十多个“实体”模型项目(尝试 18 个)的大型企业环境中无法很好地扩展。我最终得到了一个包含十几个项目的解决方案,其中一些只有 2 或 3 个类(即 UrlRewriter)。此外,我发现自己引用其他项目只是为了他们的接口。我觉得这污染了我的领域;虽然不是具体的引用,但有时很难避免循环引用。
所以,我有时会回到“层”概念...
我想知道其他 DDD 专家如何分解企业级应用程序。请随时推荐书籍和文章。
提前致谢!
【问题讨论】:
标签: refactoring domain-driven-design