C# DDD+整洁/洋葱架构下,外部服务及模型的分层放置问题
问题解答
1. IGitHubService接口与GitHubService实现的放置是否合理?
完全合理,这完全贴合整洁架构/洋葱架构的依赖设计原则:
- 应用层(Application)的核心职责之一是定义自身所需的外部依赖抽象,
IGitHubService作为调用GitHub外部API的契约,放在Application/Contracts下,既能让应用层明确对外能力的需求,又避免了直接耦合具体实现。 - 基础设施层(Infrastructure)负责对接所有外部资源(第三方API、数据库、文件系统等),
GitHubService作为接口的具体实现,放在这一层刚好匹配它对接外部API的职责,也符合"外层依赖内层抽象"的依赖倒置原则。
2. GitHubUserProfile的放置位置与Domain层文件夹规划
首先明确GitHubUserProfile的定位:如果它只是从GitHub API返回的纯数据载体,不包含任何领域业务行为,那它属于DDD中的值对象(不可变、无唯一标识),建议放在Domain/ValueObjects文件夹下。
关于是否需要创建Models文件夹:
- 若团队习惯用
Models统一存放这类无业务行为的数据结构,创建也没问题,但更贴合DDD理念的是用ValueObjects命名,因为它能精准反映这类对象的本质。 - 核心原则是保持Domain层内的文件夹职责统一,比如不要把实体和值对象混放,确保结构清晰易维护。
内容的提问来源于stack exchange,提问作者Alle
相关产品推荐
相关产品推荐

