难以理解干净的架构
trouble understanding clean architecture
我对干净架构的架构概念比较陌生。不幸的是我有一些理解问题:
我理解这个概念,你应该遵循规则,内层不能知道外层的任何信息,你只能通过边界接口调用外层。
现在让我们进行一个简单的思维实验,其中用户输入持久存储的数据:您有一个 UI(Webform、控制台,...)并且用户输入数据。在事件(例如提交)之后,控制器调用用例(比如 'PersistentStoreData'),然后我们向下工作到实体级别。
我有点理解这一点。但是假设我们要将数据存储到数据库中。解耦规则说,任何来自内层的实体、用例或任何东西都无法知道外层的任何信息。只能通过接口进行调用。但是有一次必须实例化一个对象,它具有处理数据库请求的业务逻辑,当然你不能实例化一个接口。哪个组件实例化了这个 'database-object'?由于依赖规则,不是内层。唯一的其他组件是 UI,但这对我来说毫无意义。为什么 UI 应该知道有关数据库的任何信息?
也许是个愚蠢的问题,但我无法理解这个问题。
查看 IoC 解决方案。他们真的让这一切成为可能。通过外部化这些依赖关系,您可以对抽象(接口)进行编码。因此,您编程到存储库接口而不是 database-object。这样调用 class 就不必知道存储库的详细信息。
就实际调用 IoC 基础结构的内容而言,它实际上通常是您正在使用的框架的一个组件,或者,在您不使用框架的情况下,UI 会谈用它来检索 use-case.
您想查看的关键模式是 "repository pattern" 和 "unit of work" 模式。
传统分层架构和整洁架构之间的主要区别在于存储库的接口属于用例层而不是数据访问层。
我在 How to implement Clean Architecture 上开始了一个博客系列 - 也许这有助于您将 Clean Architecture 付诸实践。
我对干净架构的架构概念比较陌生。不幸的是我有一些理解问题:
我理解这个概念,你应该遵循规则,内层不能知道外层的任何信息,你只能通过边界接口调用外层。
现在让我们进行一个简单的思维实验,其中用户输入持久存储的数据:您有一个 UI(Webform、控制台,...)并且用户输入数据。在事件(例如提交)之后,控制器调用用例(比如 'PersistentStoreData'),然后我们向下工作到实体级别。 我有点理解这一点。但是假设我们要将数据存储到数据库中。解耦规则说,任何来自内层的实体、用例或任何东西都无法知道外层的任何信息。只能通过接口进行调用。但是有一次必须实例化一个对象,它具有处理数据库请求的业务逻辑,当然你不能实例化一个接口。哪个组件实例化了这个 'database-object'?由于依赖规则,不是内层。唯一的其他组件是 UI,但这对我来说毫无意义。为什么 UI 应该知道有关数据库的任何信息?
也许是个愚蠢的问题,但我无法理解这个问题。
查看 IoC 解决方案。他们真的让这一切成为可能。通过外部化这些依赖关系,您可以对抽象(接口)进行编码。因此,您编程到存储库接口而不是 database-object。这样调用 class 就不必知道存储库的详细信息。
就实际调用 IoC 基础结构的内容而言,它实际上通常是您正在使用的框架的一个组件,或者,在您不使用框架的情况下,UI 会谈用它来检索 use-case.
您想查看的关键模式是 "repository pattern" 和 "unit of work" 模式。
传统分层架构和整洁架构之间的主要区别在于存储库的接口属于用例层而不是数据访问层。
我在 How to implement Clean Architecture 上开始了一个博客系列 - 也许这有助于您将 Clean Architecture 付诸实践。