【发布时间】:2013-02-28 11:35:46
【问题描述】:
Jeffrey Palermo 开创了洋葱架构,我发现这是一个很好的方法。
http://www.headspring.com/jeffrey/onion-architecture-part-4-after-four-years/
但是,如果我的理解是正确的,他的陈述“内层定义接口。外层实现接口”似乎与 IoC 相矛盾,即消费者定义接口和提供者实现它,即控制权在于消费者而不是提供者。
这个原则对我来说很有意义,因为假设您正在编写一个 UI,这个原则意味着您可以继续创建您的 UI,而无需了解您将要调用的服务,因为您负责定义接口它公开了您需要的所有功能。
因此,为此,Jeffreys 的声明似乎是矛盾的,并且让我对将合同(接口定义)放在哪里感到困惑,因为它似乎暗示: 领域层 我的实体 IMyService 服务 MyEntityService : IMyService
由于域下没有层,我将 IMyEntity 放在哪里。这也意味着在 Domain 存在并定义 IMyService 之前,我无法创建 Presentation 项目。
正如我的旁注,我应该将 IMyEntityRepository 和 MyEntityRepository 放在哪里?由于服务依赖于 IMyEntityRepository 而 MyEntityRepository 依赖于 IMyEntity
【问题讨论】:
标签: inversion-of-control onion-architecture