gpt4 book ai didi

.net - 依赖注入(inject)——它是否违反了关注点分离?

转载 作者:行者123 更新时间:2023-12-02 01:16:05 25 4
gpt4 key购买 nike

依赖注入(inject)是否违反了涉及 n 层架构的关注点分离?

假设您有以下项目:

MyApp.Data
MyApp.Business
MyApp.Web

如果我使用 DI 告诉业务层要使用哪个数据上下文,这不会违反 SoC 吗?这意味着 UI (MyApp.Web) 必须了解数据访问层 (MyApp.Data) 才能告诉业务层 (MyApp.Business) 使用哪个上下文,对吗?

public class WebForm {
public void Save(Object dto) {
BusinessObject bo = new BusinessObject(Data.MyDataContext);
bo.ValidateAndSave(dto);
}
}

我一直认为,在 n 层架构中,每一层应该只了解下一层(UI 到业务,业务到数据)。这真的没什么大不了的吗?

最佳答案

总的来说,你是对的。然而,依赖注入(inject)往往被认为是“配置”而不是表示层的一部分(尽管它通常确实存在于表示层中)。如果您的 UI 组件被设计为不了解数据层,那么这才是真正重要的。

如果您正在设计一个可测试的系统,那么业务层和数据层应该独立于 UI,但必须进行一些配置。您可以创建另一个名为 MyApp.Configuration 的层来完成所有这些工作,但大多数人发现这是过度设计的。

重要的是你的组件是否设计得好,而不是UI是否对其他层有一些配置知识。

这实际上与 Web.Config 中的应用程序设置没有什么不同。毕竟,除非您使用面向服务的体系结构,否则一切都在同一台计算机上的同一进程中运行。如果您使用 SoA,那么您将在各自的服务器上配置各个部分。

关于.net - 依赖注入(inject)——它是否违反了关注点分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com