【发布时间】:2019-07-22 23:40:13
【问题描述】:
我第一次尝试 DDD,结果卡在了中间。
当前设计:
我们目前的设计,不优雅但简单且有效。 Views 绑定到ViewModels,而ViewModels 引用了ServiceClients。当用户在 View 上请求某些东西时,它会改变 ViewModels 的状态,而 ViewModels 反过来会请求 ServiceClients。 ServiceClient 可以同步或异步响应请求。
优点:非常简单的设计,并且有效。
缺点:
- 与一切紧密耦合,每个人都需要参考一切来完成工作。
- 很大程度上违反了 SOLID。
- 上帝无处不在
- 根本无法测试!
DDD:
我决定在 DDD 中避难,以摆脱上面提到的所有缺点。这个想法是从ViewModels 中分离出Models,并打破ViewModels 和ServiceClients 之间的依赖关系。到目前为止一切顺利。
我在这里面临的主要问题是该项目现在变得高度事件驱动。我必须触发很多事件才能执行一个简单的操作。
例如:如果 ViewModel 请求
ServiceClients
ViewModel将调用Model对象上的操作,Model触发一个由ServiceClients处理的事件。ServiceClients将调用Model上的操作以发送响应Model将触发一个事件,由ViewModel处理以接收响应
问题是: 1. 架构布局是否正确? 2. 完成简单的事情需要事件吗?
感谢您的宝贵时间。
【问题讨论】:
标签: c# wpf mvvm architecture domain-driven-design