应用服务通过调用和协调对工作流、基础设施服务、域服务和域实体的调用来完成客户端(即表示层)发出的命令。
很少有域服务与应用程序服务做类似的工作,这是否是一种常见的做法,这意味着它们也进行和协调调用,唯一的区别是它们在更细粒度的级别上进行(即它们只进行和协调对其他的调用)域服务和域对象)?
如果是,任何想法这些域服务应该有多细?
谢谢
应用服务通过调用和协调对工作流、基础设施服务、域服务和域实体的调用来完成客户端(即表示层)发出的命令。
很少有域服务与应用程序服务做类似的工作,这是否是一种常见的做法,这意味着它们也进行和协调调用,唯一的区别是它们在更细粒度的级别上进行(即它们只进行和协调对其他的调用)域服务和域对象)?
如果是,任何想法这些域服务应该有多细?
谢谢
域服务包含不特别适合任何实体或跨越多个实体的域逻辑。
一个经常被引用的例子是 FundsTransferService。转移资金似乎不是 BankAccount 实体的责任,因为这意味着源账户可以修改目标账户的余额(或相反),这看起来很尴尬并且可能很危险。FundsTransferService 中的专用 TransferFunds() 方法可以更好地分离关注点并在一个地方引导所有资金流动。
在这方面,您可以说域服务协调对实体和其他服务的调用,但与应用层服务执行 IMO 的意义不同。通常,应用层服务只是样板程序代码,而域服务包含真实的业务规则。
唯一的区别是他们在更细粒度的级别上做
我不会说域服务比应用程序服务更细粒度。它们本质上只是在不同的层中。这就像说存储库比控制器粒度更细......通常粒度是衡量一个内聚操作在多大程度上被分成较小的部分而不是一个大的过程。