DDD应用服务领域模型到视图模型的映射

9
我对应用程序服务的理解是它们将域和用户界面连接在一起。换句话说,它们为控制器提供服务,以便对域执行操作。
我的应用程序中有以下项目布局:
- 域核心 - 基础设施 - 服务接口 - Web UI - 视图模型 - 视图 - 控制器 - 服务(应用程序服务)
我的“服务接口”位于“Web UI”项目之外。然后在“Web UI”项目中,在“服务”下实现服务接口。
然而,这种结构有点缺陷,并且在实践中会创建循环依赖。我试图遵循此链接中的架构:https://www.develop.com/onionarchitecture 对于给定的服务,我想传入视图模型,根据视图模型对域执行操作,然后返回更新后的视图模型。这种方法是否错误?

我的理解是应用服务本质上将视图模型作为参数,如果需要更新领域和视图模型中的一些细节,然后返回一个视图模型。

或者

应用服务只处理C#数据类型和领域模型作为参数,并返回相同的数据类型?换句话说,不会获取或设置视图模型中的任何信息。实际上,不知道视图模型的存在。

我只需要一些关于严格的DDD方法的最佳实践的澄清。


1
应用程序服务通常不驻留在表示层(UI)中,而是有一个专门的应用层来处理此类服务。 - plalx
我应该为这些服务实现创建一个不同的项目,还是将它们放在接口所在的 Services 下? - Shane van Wyk
1
只要为每个组件/层专门创建一个目录,您就可以将所有内容放在一个项目中。 - MikeSW
1个回答

4
回答您的问题:是的,您是正确的。对于MVC应用程序,您可以设计一个层,该层接受并返回ViewModels并在内部操作Domain。
好的解决方案结构示例由Dino Esposito制作,此处链接。我将我的项目采用了这个结构,并变得更加清晰。我认为洋葱架构对于小型或中型项目来说过于复杂。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接