Jeffrey Palermo 开创了洋葱架构,我找到了一个很好的方法。
http://www.headspring.com/jeffrey/onion-architecture-part-4-after-four-years/
然而,如果我的理解是正确的,他的声明“内层定义接口。外层实现接口”似乎与 IoC 相矛盾,它指出消费者定义接口和提供者实现它,即控制权在于消费者而不是提供者。
这个原则对我来说很有意义,因为,假设你正在编写一个 UI,这个原则意味着你可以继续创建你的 UI,而不需要对你将要调用的服务一无所知,因为你负责定义暴露所有服务的接口您需要的功能。
因此,为此,Jeffreys 的声明似乎自相矛盾,让我对将合同(接口定义)放在哪里感到困惑,因为它似乎暗示: Domain Layer MyEntity IMyService Service MyEntityService : IMyService
由于域下面没有层,我将 IMyEntity 放在哪里。这也意味着在域存在并定义 IMyService 之前,我无法创建演示项目。
正如我的旁注,我在哪里放置 IMyEntityRepository 和 MyEntityRepository ?由于服务依赖于 IMyEntityRepository 而 MyEntityRepository 依赖于 IMyEntity