ASP.NET Core MVC:创建业务和模型时如何实现SOLID原则?

ASP.NET Core MVC: how to implement SOLID principle when creating buisness and Model?

我创建了一个 ASP.NET Core MVC 项目。它有一个存储库 class 和一个业务逻辑层。

我已经为存储库 class 创建了一个接口,为 BLL class 创建了另一个接口。

我从控制器注入 BLL class,它访问存储库以获取数据。

所以我想在这里提出的观点是,我的控制器对模型 class 的存储库 class 一无所知,但它访问业务 class通过依赖注入,业务 class 通过依赖注入访问存储库 class。

所以现在我有点困惑。我在想,控制器应该可以访问业务和存储库,两者都应该从控制器注入。控制器应该从存储库 class 获取数据并将其传递给 BLL。相反,控制器只访问 bll,然后 bll 访问存储库 class.

我想知道采用哪种方法更有意义并考虑良好做法。我确实尝试过研究,但无法直接回答我的问题。

谢谢

将 top class(控制器)注入另外两个 classes(bll 和存储库)不一定会比 top class 被注入中间 class (bll) 并且中间 class 被注入底部 class (repository)。两种方式都反映了三个 classes,每个都有自己的职责。

您正在处理的是设计问题。如果您使用存储库 class 仅获取数据,而不是业务流程(您应该这样做),那么这个 class 实际上是您业务流程的一部分,因此应该注入 bll。

另一方面,如果存储库 class 与业务相关,它实际上用作 bll,在这种情况下,您有两个 bll classes 注入到控制器中。可以吗?在某种程度上,是的。但我更喜欢有一个 bll class,我会在其中注入两个 (bll-) 服务。并且可能每个服务都应该注入一个存储库。