需要实现干净的架构,但愁于DTO概念。据我所知,在表示层(ASP MVC)中不能使用我的领域对象,而应该使用DTO或ViewModel。我不确定这些DTO应该放在哪里。 我有两个项目作为核心层(Domain,Application)。Domain包含实体(如:“Post”)和仓库接口(如:“IPostRepository”)。Application包含逻辑(如:“IPostManager”、“PostManager”)。 DTO和DTO映射到实体应该在哪里完成?Asp MVC、Application还是Domain?
正如我们所知,Dto可以是不同类型的,它们没有任何行为,只用于传输数据,例如MVC模式中的Model或可能以后缀“classNameDto”命名的类。在您的情况下,这实际上取决于您使用应用程序层的上下文。一些开发人员理解“应用程序服务”更加特定于应用程序,这意味着它们与UI紧密联系。如果是这种情况,则将Dtos放置在此处是一个很好的地方,其中数据映射到和从域模型映射。否则,如果映射在Web层完成,则需要将Dtos放在那里。简单来说,就像@Jimmy Bogard所说:“将类放在实际使用它们的地方。”我还建议阅读更多关于清洁架构的内容,并查看您是否朝着正确的方向前进。希望这有所帮助 :)
这看起来像是一个单一的应用程序。因此,在这种情况下,我会尽可能地将我的DTO放在它们被使用的地方附近。如果是MVC,则我的DTO就在我的视图旁边: 视图 账户 Index.cshtml IndexModel.cs 或者如果是Razor Pages,则DTO只是内部类。请参阅我的ContosoUniversity示例以获得一个可行的示例: MVC 示例 Razor Pages 示例 这不是“干净的架构”,而是“垂直切片架构”,但这并不重要。将类放在实际使用它们的地方附近。