如何在3层架构中组织依赖关系

卡罗尔

我正在启动将使用3层架构和REST API的项目。

我想将每一层划分为单独的模块,因此我肯定至少需要3个模块:

  • 休息
  • BLL
  • 来自

在它们之间建立依赖关系的最佳方法是:

1)

  • REST取决于BLL
  • BLL取决于DAL
  • DAL无关紧要

2)

  • REST无关紧要
  • BLL取决于REST
  • DAL取决于BLL

3)

  • REST取决于REST-BLL接口
  • REST-BLL接口不依赖任何内容
  • BLL取决于REST-BLL接口和DAL-BLL接口
  • DAL-BLL-接口无所依托
  • DAL取决于DAL-BLL接口

第三种方法似乎与依赖倒置原则最兼容,但是需要更多模块。您如何命名这两个附加模块?

布朗克斯

我会将您的BLL代码保留在一个名为Services的项目中,将DAL代码保留在一个名为Repositories的项目中,并将您的接口和业务对象(或实体)保留在一个名为Core的项目中。

您的REST项目应仅引用核心(以及用于解决依赖关系的服务)。您仅对接口编程。如您所述,您也可以在此处采用DI原则。

您的服务和存储库应仅依赖Core。这些具体的实现只需要实现Core接口并作用于Core实体。

这种方法不仅允许您使用DI,而且使测试变得更加容易。此外,您的应用程序都不会与您的具体外部依赖项(即特定的数据库实现)紧密耦合。这使您的整个应用程序更加灵活和可扩展。

旁注:我经常包括另一个名为“基础结构”的项目,以处理诸如日志记录之类的跨领域问题。这些具体的类实现了Core接口,就像我的存储库和服务一样,可以使用接口来调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PHP中组织MVC架构

来自分类Dev

洋葱架构:尊重应用程序 MVC 层中的依赖关系

来自分类Dev

3层架构中的验证

来自分类Dev

如何在N层架构中模拟实体框架

来自分类Dev

组织DAG任务在气流中的依赖关系

来自分类Dev

如何在JBOSS 7 EJB 3中指定消息驱动Bean依赖关系?

来自分类Dev

在3层架构中操作datagridview列

来自分类Dev

如何在开发中的Julia包中更新依赖关系

来自分类Dev

组织模式:如何在稀疏树中折叠除电流以外的所有层?

来自分类Dev

C#中项目之间依赖关系的正确组织

来自分类Dev

如何在Play 2.5中激活循环依赖关系?

来自分类Dev

如何在SetupTools中配置SVN依赖关系链接

来自分类Dev

如何在project.json中声明开发依赖关系?

来自分类常见问题

如何在Android Studio中显示依赖关系树?

来自分类Dev

如何在Eclipse中为Gradle依赖关系附加Javadocs?

来自分类Dev

如何在Gradle中迭代项目的依赖关系

来自分类Dev

CMake如何在QtCreator中处理对象依赖关系(.od)

来自分类Dev

如何在RubyOnRails中设置模型之间的依赖关系

来自分类Dev

如何在Eciplse中设置Android L的RecyclerView的依赖关系?

来自分类Dev

如何在make中管理c文件的依赖关系

来自分类Dev

如何在Clojure中管理前端库依赖关系?

来自分类Dev

如何在sbt 13中表达任务依赖关系

来自分类Dev

CMake如何在QtCreator中处理对象依赖关系(.od)

来自分类Dev

devExpress XAF中的关系如何组织

来自分类Dev

devExpress XAF中的关系如何组织

来自分类Dev

配置服务时如何在具有依赖关系注入的Azure Function V3中注入或使用IConfiguration

来自分类Dev

如何在第3层中显示标记

来自分类Dev

如何在Openlayers 3的图像层中删除要素

来自分类Dev

如何在sbt构建中定义依赖关系,以便IDEA在外部库中显示依赖关系?

Related 相关文章

  1. 1

    如何在PHP中组织MVC架构

  2. 2

    洋葱架构:尊重应用程序 MVC 层中的依赖关系

  3. 3

    3层架构中的验证

  4. 4

    如何在N层架构中模拟实体框架

  5. 5

    组织DAG任务在气流中的依赖关系

  6. 6

    如何在JBOSS 7 EJB 3中指定消息驱动Bean依赖关系?

  7. 7

    在3层架构中操作datagridview列

  8. 8

    如何在开发中的Julia包中更新依赖关系

  9. 9

    组织模式:如何在稀疏树中折叠除电流以外的所有层?

  10. 10

    C#中项目之间依赖关系的正确组织

  11. 11

    如何在Play 2.5中激活循环依赖关系?

  12. 12

    如何在SetupTools中配置SVN依赖关系链接

  13. 13

    如何在project.json中声明开发依赖关系?

  14. 14

    如何在Android Studio中显示依赖关系树?

  15. 15

    如何在Eclipse中为Gradle依赖关系附加Javadocs?

  16. 16

    如何在Gradle中迭代项目的依赖关系

  17. 17

    CMake如何在QtCreator中处理对象依赖关系(.od)

  18. 18

    如何在RubyOnRails中设置模型之间的依赖关系

  19. 19

    如何在Eciplse中设置Android L的RecyclerView的依赖关系?

  20. 20

    如何在make中管理c文件的依赖关系

  21. 21

    如何在Clojure中管理前端库依赖关系?

  22. 22

    如何在sbt 13中表达任务依赖关系

  23. 23

    CMake如何在QtCreator中处理对象依赖关系(.od)

  24. 24

    devExpress XAF中的关系如何组织

  25. 25

    devExpress XAF中的关系如何组织

  26. 26

    配置服务时如何在具有依赖关系注入的Azure Function V3中注入或使用IConfiguration

  27. 27

    如何在第3层中显示标记

  28. 28

    如何在Openlayers 3的图像层中删除要素

  29. 29

    如何在sbt构建中定义依赖关系,以便IDEA在外部库中显示依赖关系?

热门标签

归档