如果一个DTO接口的域或服务层来定义? [关闭]

问题描述 投票:1回答:1

我想adpaters到一个公共接口传递到车服务。我读过的接口应该是在域层的DTO在服务层,这似乎与我发生冲突被定义。你不想领域层不得不在DTO定义的服务层提供参考。

我在想什么?还是确定有接口与DTO住在业务层,就像我在图中?

enter image description here

c# interface service-layer
1个回答
0
投票

所以,如果你使用的分层架构模式(我想你这样做),这个模式的一个基本属性应该考虑到。此属性意味着从上从下一个底层的一层或多层模块或抽象的层应“使用”(依赖)的模块(类)在不同的层,特别是模块之间的“使用”依赖特定的顺序。我提到层,因为可以有一些松弛约束,其允许从邻近的下层使用不仅类,但其是下面的给定的一个的所有的层。至于向上依赖的约束是非常严格和明确的 - 这是不允许的,否则它不是一个分层的架构,但别的东西,因为它消除了质量属性的分层架构能为我们带来。作为逻辑结果 - 使用DTO从域层内的服务层意味着违反分层架构约束向上依赖性。

至于接口,分层架构的另一个基本特性是层应彼此抽象的方法分离。这里的抽象可能意味着一些公共合同(API,接口等),它定义高层的意图和下层的期望,但仅此而已,这使得分层架构从可修改性和便携性的角度如此大的吸引力。这就是为什么我们都在谈论这只是一个抽象机制的所有层的接口。

现在,作为一个结论:如果你的DTO在服务层,他们应该是相同的层(以上在某些情况下或层)合同的一部分,但不低于以排除层与层之间的依赖关系向上。的接口仍然域层,以及用于任何其他层的抽象目的有效的(甚至希望的)。

© www.soinside.com 2019 - 2024. All rights reserved.