首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在干净的体系结构中,拥有从UI层到Infra层的编译时间依赖意味着什么?

在干净的体系结构中,拥有从UI层到Infra层的编译时间依赖意味着什么?
EN

Stack Overflow用户
提问于 2021-07-05 09:37:01
回答 1查看 75关注 0票数 0

这是关于干净的建筑。如下图所示,实心箭头表示编译时依赖项,虚线箭头表示仅运行时依赖项。

其思想是,核心层拥有接口和业务逻辑。下层是持久层的实现。UI层是MVC web层。

下层和UI层都引用核心层。这会导致编译时依赖关系。运行时依赖关系作为DI框架的一部分发生.图2清楚地表示了这一点。

图1略有不同,显示了从UI层到Infra层的编译时间依赖性(这在图2中没有显示)。在清洁架构的中,从UI层到Infra层的编译时间依赖是什么意思?

图1:

图2:

参考资料:https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures

EN

回答 1

Stack Overflow用户

发布于 2021-07-06 02:26:36

有编译时依赖性意味着什么?

这意味着依赖关系在编译时存在。因此,如果没有依赖项,则无法编译。

这也意味着代码的一个部分和另一个部分之间有很强的联系。这可能是可以的,但在某些情况下,您可能想要避免这种情况。

更有可能的是,依赖项中的设计决策可能会进入不应该出现的代码中,例如影响UI的基础设施。

典型的例子是数据库技术和数据访问代码。假设您开发了应用程序的UI和业务逻辑,但是您希望实现两个不同的数据库-- MS和Oracle。您可以将必要的数据访问代码开发成两个不同的程序集/模块--每个程序集/模块一个,但由于编译时的依赖性,您必须同时使用它们,生成的结果将包括Oracle和MS系统依赖项。

如果使用DI,则依赖关系只在运行时生效,因此您的构建将更加干净。

这还意味着,在UI中使用Oracle或MS特定代码的可能性要小得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68253822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档