干净的架构图

Jer*_*auw 2 architecture diagram clean-architecture

以下是Uncle Bobs 原始博客文章中的经典Clean Architecture图。

清洁建筑

我对网关为何比用例更外向感到困惑。到目前为止,我在所有此类图中都看到了这些东西,其中包括网关或其他某种形式的数据访问机制。

我知道用例不应绑定到数据访问机制的细节,因为它们应隐藏在体系结构边界后面。同时,构成此边界的服务的唯一用户应该是用例。这与该图有很大的冲突,因为遵循视觉规则,用例不能使用网关(需要时),而框架式的东西可以使用网关(而不必)。

我想念什么吗?如果不是,是否有更正确的方法以可视方式表示“清洁建筑”的规则?

我问是因为我正在创建一个显示“干净架构+ DDD有界上下文”的图表。

在此处输入图片说明

我对DBC和服务位不在UseCase圈子之外的情况感到不满意,因为不清楚UseCases是Bounded Context的公共接口,并且不能从外部直接访问持久性。

这样的事情解决了这两个问题,但引入了一个新问题:没有数据访问层边界的指示。实际上,遵循视觉规则,该图表明,有界上下文中的所有内容都可以直接访问持久性。

在此处输入图片说明

我相信我遇到了同样的问题,导致网关在原始图中“放错了位置”,并且正在寻找解决方法。

小智 6

该图显示了实现所在的位置,而不是接口。网关接口与用例一起存在。

  • @JeroenDeDauw您始终可以在各自的模块中分隔接口,以避免可见用例。但是,在应用程序中的某个位置,您将始终能够访问所有公共类型,因此您可以选择编写“意大利面条式代码”。但是你应该吗?海事组织。有些“封装”必须通过对流而不是编译器支持来实施。 (2认同)