整洁的架构:网关到网关的通信必须通过用例进行吗?
Clean Architecture: Must gateway to gateway communication go via a use case?
在我的应用程序中,网络实现(特别是 HTTP 请求拦截器)需要存储在本地持久存储中的授权令牌。
现在,遵循干净的架构,网络实现和持久存储都在最外层,即框架层。
可以通过存储库检索访问令牌(其中实现在 gateway/interface 适配器层中,存储库接口在 inner-most/entity 层中。
在我的场景中应该如何控制流程?应该去
- 通过用例,因为在环形图中,用例层完全封装了实体层
- 通过存储库接口并跳过用例层?
作为 1
的反驳论据,我看到
- 我需要一个 "get access token" 用例,从用户的角度来看,这不是一个真实的用例。
- 如果用例层总是封装实体层,存储库接口在实体层但只在接口适配器层实现(跳过用例层)可以吗?
作为 2
的反驳论点,我看到用例层仅存在于实体和面向用户的界面(控制器、呈现器)之间,而不存在于实体和数据网关之间——这意味着用例层实际上并不存在完全封装实体层,这意味着层的环表示不准确。
据我了解 Clean 架构并在我的应用程序中实现了它,存储库接口始终位于用例层而不是实体层。
此外,如果访问令牌处理不是您的应用程序核心业务逻辑的一部分,我会在适配器层中保留访问令牌处理。
在我的应用程序中,网络实现(特别是 HTTP 请求拦截器)需要存储在本地持久存储中的授权令牌。
现在,遵循干净的架构,网络实现和持久存储都在最外层,即框架层。
可以通过存储库检索访问令牌(其中实现在 gateway/interface 适配器层中,存储库接口在 inner-most/entity 层中。
在我的场景中应该如何控制流程?应该去
- 通过用例,因为在环形图中,用例层完全封装了实体层
- 通过存储库接口并跳过用例层?
作为 1
的反驳论据,我看到
- 我需要一个 "get access token" 用例,从用户的角度来看,这不是一个真实的用例。
- 如果用例层总是封装实体层,存储库接口在实体层但只在接口适配器层实现(跳过用例层)可以吗?
作为 2
的反驳论点,我看到用例层仅存在于实体和面向用户的界面(控制器、呈现器)之间,而不存在于实体和数据网关之间——这意味着用例层实际上并不存在完全封装实体层,这意味着层的环表示不准确。
据我了解 Clean 架构并在我的应用程序中实现了它,存储库接口始终位于用例层而不是实体层。
此外,如果访问令牌处理不是您的应用程序核心业务逻辑的一部分,我会在适配器层中保留访问令牌处理。