干净的架构:为什么在 Api 和数据库层之间直接引用?
Clean architecture : why direct reference between Api and Database layers?
让 Api 项目(例如:.Net 核心 Api MVC)需要直接引用数据库项目似乎与干净架构的目标相矛盾,以便注入作为服务 DbContext:
services.AddDbContext<IDatabaseService, DatabaseService>();
层应该是独立的并且不知道特定的实现,在本例中是 DatabaseService class。这个方法我看了几个教程。
我想知道如何改进?也许是专用于依赖注入的中央(核心)项目层?
IOC 通常是我们实现抽象和清洁架构的方式,在您的 IOC 容器中完全允许各种耦合。
然而,您通常是正确的,因为直接依赖 DbContext 而不是 Repository Pattern 之类的东西会使事情与数据库紧密耦合,从而破坏清洁代码。这是许多开发人员做出的妥协,仅仅是因为他们觉得他们不太可能分解他们的应用程序并将其与相关数据库分离。
他们当然可能会大错特错,如果他们认为他们的上下文太大,他们需要将一部分拆分成自己的服务,他们将需要进行一些重构。
让 Api 项目(例如:.Net 核心 Api MVC)需要直接引用数据库项目似乎与干净架构的目标相矛盾,以便注入作为服务 DbContext:
services.AddDbContext<IDatabaseService, DatabaseService>();
层应该是独立的并且不知道特定的实现,在本例中是 DatabaseService class。这个方法我看了几个教程。
我想知道如何改进?也许是专用于依赖注入的中央(核心)项目层?
IOC 通常是我们实现抽象和清洁架构的方式,在您的 IOC 容器中完全允许各种耦合。
然而,您通常是正确的,因为直接依赖 DbContext 而不是 Repository Pattern 之类的东西会使事情与数据库紧密耦合,从而破坏清洁代码。这是许多开发人员做出的妥协,仅仅是因为他们觉得他们不太可能分解他们的应用程序并将其与相关数据库分离。
他们当然可能会大错特错,如果他们认为他们的上下文太大,他们需要将一部分拆分成自己的服务,他们将需要进行一些重构。