清洁架构中的“用例交互器”和“服务”有啥区别?

Posted

技术标签:

【中文标题】清洁架构中的“用例交互器”和“服务”有啥区别?【英文标题】:What is the differece between a 'Use Case Interactor' and a 'Service' in Clean Architecture?清洁架构中的“用例交互器”和“服务”有什么区别? 【发布时间】:2019-12-20 18:09:26 【问题描述】:

我不太明白干净架构中用例交互器服务之间的区别。域服务只是“用例交互器方法”的集合吗?

我想在我的 ASP.net 核心应用程序中实现干净的架构,但我不确定是否应该以“用例交互器”方式 (https://fullstackmark.com/post/18/building-aspnet-core-web-apis-with-clean-architecture)、“服务”方式 (@987654322) 来实现它@) 或者我是否应该将它们结合起来(如果可能的话)。

【问题讨论】:

就 DDD 而言,服务类型很少。和层。有负责业务逻辑的领域层和负责操作业务规则和实体的领域服务。应用服务实现用例。应用服务实现用例并与领域服务紧密合作。软件的另一部分,如基础设施层,与您的应用服务一起使用。 【参考方案1】:

严格来说,“域服务”一词在 Bob 大叔的 Clean Architecture 中并不存在,而是在 DDD 中存在。在 Clean Architecture 中,所有业务逻辑都转到用例交互器和实体。因此,如果您想严格遵循鲍勃叔叔的架构,请遵循您链接的第一篇文章中描述的用例交互器方式。

有关用例和用例交互器的更详细讨论,请参阅我的帖子:http://www.plainionist.net/Implementing-Clean-Architecture-UseCases/

【讨论】:

哦,你采取了一个非常有趣的方法。您如何看待这个想法,每个用例只有一个交互器,它使用服务。因为在我看来,用例交互器与服务不同。用例交互器处理完成用例的过程,而服务负责完成一个简单的任务,与调用它的交互器无关。我看到您为一个用例创建了多个交互器(实际上,我的“服务”和您的“子交互器”之间的区别只是名称)。你认为我的方法也符合 CA 的要求吗? 正如您已经指出的那样:区别只是名称 ;-) 因此,如果您想给完成一项简单任务的类起一个不同的名称:请继续。我认为它仍然符合干净的架构。如果它是关于核心业务逻辑而不是特定于用例和应用程序的,您可能会考虑将一些服务功能放入实体中。 好的,感谢您将一些服务功能放入实体的提示。这是一个很好的建议。

以上是关于清洁架构中的“用例交互器”和“服务”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

清洁架构,数据请求协调器,演示者或用例/交互器?

N层架构中的服务层和业务层有啥区别

lora与lora wan有啥区别

xstate 中的参与者和调用服务有啥区别?

清洁架构中的数据库登录?

JSON Schema 中的附加项和附加属性有啥区别?