假设我有分布式架构(客户端 - 服务器)。在客户端,有 ServerEntity 类,在客户端有 ClientEntity 类。我希望 ClientEntity 只是从 ServerEntity 请求一些数据。我最近开始学习DDD方法,实际上我喜欢域事件,所以我选择了它。以下是我对未来实施的简化期望:
上述方法的缺点是我们最终会得到数十个命令类。
另一方面,还有另一种选择:我们创建一些域服务接口,如IRequestDataService,并将其作为ClientEntity的依赖项。因此,我们不需要创建命令类并将其传递给消息总线,我们只需从IRequestDataService调用适当的方法。来自服务器的响应被收到域事件,如上例所示。
第二种方法的缺点是我们只使用服务来发送命令,这在我的视野中应该只执行同步操作。
哪种方法更好,我认为正确的客户端 - 服务器通信方式?
答案 0 :(得分:0)
您的RequestDataCommand对我来说看起来不像是命令。
命令是使用UL的命令性指令,它会更改系统的状态。请求数据不会改变状态,因此它不应该是一个命令。
你的第二种方法也遇到了类似的问题。对IRequestDataService的调用不应该更改服务器上的状态。没有状态改变意味着不应该发起任何事件,至少不会发生在正常情况下#34; DDD
我的印象是,您正在尝试使用您拥有的基础设施(事件,消息总线,......)来做您不应该做的事情。
在我看来,对于读取数据,更好的选择是绕过大多数域逻辑,只是以最简单直接的方式读取数据。看看CQRS(http://martinfowler.com/bliki/CQRS.html是一个好的开始)