我应该将DTO放在哪里的干净的体系结构中?

时间:2019-02-18 13:13:40

标签: c# automapper clean-architecture

enter image description here

需要实现简洁的体系结构,并努力应对DTO概念。据我了解,我不能在表示层(asp mvc)中使用域对象,而应使用DTO或viewmodel。我不确定这些DTO应该去哪里。 我有两个项目作为我的核心层(域,应用程序)。域包含我的实体ex:'Post'+存储库接口ex:'IPostRepository'。应用程序拥有逻辑,例如:“ IPostManager” +“ PostManager”。 DTO和DTO映射到实体应该在哪里发生? ASP MVC,应用程序还是域?

3 个答案:

答案 0 :(得分:0)

这看起来像一个应用程序。因此,在这种情况下,我将DTO放置在尽可能靠近使用的地方。如果是MVC,那么我的DTO就在我的视图旁边:

  • 观看次数
    • 帐户
    • Index.cshtml
    • IndexModel.cs

或者如果是Razor Pages,那么DTO就是内部类。请参阅我的ContosoUniversity示例以获取工作示例:

MVC example

Razor Pages example

这不是“干净的体系结构”,而是“垂直切片体系结构”,但这没关系。将类放在实际使用的地方。

答案 1 :(得分:0)

在您的情况下,演示文稿和域都可以访问DTO。因此最好具有 Infrastructure 并从那里进行引用。

答案 2 :(得分:0)

我们已经知道,Dtos可以是不具有任何行为的不同类型,仅用于传输数据,例如MVC模式中的Model或可能带有后缀'classNameDto'的类

对于您而言,这实际上取决于您使用应用程序层的上下文。一些开发人员了解“应用程序服务”更特定于应用程序,这意味着它们与UI紧密相关。

如果是这种情况,那么这是一个将Dto映射到域模型或从域模型映射数据的好地方。

否则,如果映射是在Web层完成的,则Dtos需要去那里。

@Jimmy Bogard用简单的话说:“将类放在靠近实际使用的地方。”

我还建议您进一步阅读干净的体系结构,看看您是否朝着正确的方向前进。

希望这会有所帮助:)